MySQL數據庫亂碼的緣由mysql
在計算機中任何數據都是以二進制存儲的,要存儲一個字符就要對它進行編碼,用一個二進制與其對應,這種對應的規則就是字符的編碼。編碼的規則有不少種,一種規則所編碼的「字符」的集合就叫作「字符集」。在制定編碼標準的時候,「字符的集合」和「編碼」通常都是同時制定的,所以,平時咱們所說的「字符集」,例如GB2312,GBK和UTF-8等,除了有「字符的集合」這層含義外,同時也包含了「編碼」的含義。sql
對中文處理能夠使用GB2312和GBK,它是中文字符集,而UTF-8是對世界上每一個國家和地區的文字之地制定的字符集,而且UTF-8是可變存儲長度的字符集,如英文字母只須要一個字節存儲,節省了存儲空間,因此數據庫中一般採用UTF-8的字符集。數據庫
服務器系統字符設置問題vim
數據表語系設置的問題服務器
客戶端鏈接語系的問題ide
解決方法編碼
在建立數據庫時經過CHARACTER SET 字符集與COLLATE 'utf8_general_ci' 設定spa
在建立表時經過DEFAULT CHARSET = 字符集 設定ci
可以使用SET NAMES 字符集設置默認的字符集it
修改配置文件,在[mysql]段中加入default_character_set=字符集
⑴在建立數據庫時設定字符集
CREATE DATABASE chartest CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';
⑵在建立表時設定字符集
CREATE TABLE 'charatertest' (id varhsar(40)) DEFAULT CHARSET =utf8
⑶使用SET NAMES 是指默認的字符集
SET NAMES utf8
⑷修改配置文件,在[mysql]段中加入
default_character_set=utf8
舉例:
⑴建立數據庫、表、全局數據庫設置
[root@localhost ~]# mysql -u root -p123
mysql> create database mydb default character set utf8 collate utf8_general_ci;
mysql> use mydb
mysql> create table mydb_table (username varchar(64) NOT NULL ) default charset=utf8;
mysql> set names utf8;#給整個數據庫設置默認字符集
⑵修改配置文件
[root@localhost ~]# vim /etc/my.cnf
[mysql]後面加入
default_character_set=utf8