mysql亂碼問題

2021-10-01 14:37:37 字數 1857 閱讀 7151

直白的說,字元就像是單個的文字,編碼就像是給每個文字的編號,字符集就像是字元與編碼的集合,校驗規則就是字符集的對應的排序規則,字符集加上對應的校驗規則就是語言。(每種字符集可以有多種校對規則,但都有乙個預設的校對規則)

mysql可以支援多種字符集。在同乙個資料庫的不同表,同乙個表中的不同字段,都可以指定使用不同的字符集。

mysql的字符集規則

mysql可以設定的字符集:

伺服器的字符集

資料庫的字符集

表的字符集

欄位的字符集

如果在某乙個級別沒有設定字符集,則它會繼承其上一級的字符集。

解析:character_set_client:客戶端請求資料的字符集

character_set_connection:客戶機與伺服器連線的字符集

character_set_database:預設資料庫的字符集;如果沒有預設資料庫,就會使用 character_set_server指定的字符集(建議不要隨意更改)

character_set_filesystem:把 character_set_client轉換character_set_filesystem (預設為binary, 不做任何轉換)

character_set_results:返回給客戶端的字符集

character_set_server:資料庫伺服器的預設字符集

character_set_system:系統字符集,預設utf8。(用於資料庫的表、列和儲存在目錄表中函式的名字)

character_sets_dir:mysql字符集檔案的儲存路徑

產生亂碼的原因

character_set_client與實際不符合

character_set_results與客戶端頁面不符合

解析:value的命名規則: 字符集名字+語言+字尾

collation_connection :當前連線的字符集

collation_database :當前日期的預設校對

collation_server :伺服器的預設校對

字尾的含義:

ci:不區分大小寫

cs:區分大小寫

bin:二進位制排序

解決亂碼問題(一般如下)

set character_set_client = 『utf8』;

set character_set_connection = 『utf8』;

set character_set_results = 『utf8』;

或set names utf8;

或在mysql的my.cnf的配置檔案中修改或新增下列:

[client]

default-character-set = utf8

[mysqld]

character_set_server = utf8

mysql亂碼問題

原來使用過一段時間mysql,感覺簡單方便,很好用。但是今天使用居然發生了亂碼。經過在網上搜尋,很快解決了這個問題。亂碼的最終根源就是字符集問題。主要有以下原因 1.在建立資料庫時指定字符集 create database test character set gbk 2.也可以修改data目錄中相...

mysql亂碼問題!

1 修改 my.ini mysql server instance configuration 檔案 client section 客戶端 client port 3306 mysql default character set gbk server section 服務端 mysqld defau...

mysql 亂碼問題

mysql 中英文插入時,出現亂碼無法插入的問題。由於是ubuntu的機器,mysql的配置檔案是 etc mysql my.cnf 設定了下配置檔案my.cnf的編碼為utf8 client default character set utf8 default character set utf8...