Mysql數據中文亂碼問題處理

MYSQL數據庫中的字符集設置

在建立數據庫和數據表的時候,能夠選擇對應字符編碼方式,如utf8,gbk,gb2312等等。也能夠在後面修改表的Collation配置。html

因此數據表的Collation配置必須可以表示表中的中文字符,這是最基本的要求。而後字符必須是使用該Collation兼容的字符集來編碼的,這樣才能正常顯示和被mysql處理。mysql

字符集配置變量

能夠經過以下命令查看字符集變量值:sql

show variables like 'char%';

character_set_client	utf8
character_set_connection	utf8
character_set_database	utf8
character_set_filesystem	binary
character_set_results	utf8
character_set_server	utf8
character_set_system	utf8
character_sets_dir	D:\HwsApacheMaster\mysql\share\charsets\

SHOW VARIABLES LIKE 'collation%';

# Variable_name, Value
collation_connection, utf8_general_ci
collation_database, utf8_general_ci
collation_server, utf8_general_ci

這些變量的含義和做用,參見官方文檔解釋: Connection Character Sets and Collations數據庫

中文亂碼的基本緣由:編碼

  • character_set_client:客戶端的字符集
  • character_set_results:結果字符集
  • character_set_connection:鏈接字符集

這三個系統參數的做用:code

  • 信息輸入路徑: client--connection--server--database (數據傳送方向從左到右,server負責解釋和轉換)
  • 信息輸出路徑: database--server--connection--results (數據傳送方向從左到右,server負責轉換和輸出)

故這幾個系統參數的值須相同,否則以不一樣的編碼方式傳送數據,若編碼方式不兼容,則容易形成亂碼的問題。server

客戶端經過以下相似命令能夠修改上述三個參數的字符集值:htm

set names gb2312;

可是該命令沒法修改character_set_server變量的值,所以須要注意是否匹配一致。ci

相關文章
相關標籤/搜索