03 MySQL中文亂碼處理 01

2022-04-20 02:11:17 字數 2127 閱讀 5046

【mysql資料庫常見字符集介紹】

在網際網路環境中,使用mysql時常用的字符集有:

【如何選擇合適的字符集】

1.如果處理各種各樣的文字,發布到不同語言的國家地區,應選unicode字符集,對mysql來說就是utf-8(每個漢字3位元組),如果應用需要處理英文,僅少量漢字使用utf8更好(中英文混合)

2.如果只需要支援中文,並且資料量很大,效能要求也較高,可選擇gbk(定長:每個漢字佔雙位元組,英文也佔雙位元組),如果需要大量運算,如:比較排序,定長字符集,更快,效能更高。

3.處理移動網際網路業務,可能需要utf8mb4字符集。

【檢視當前mysql系統支援的字符集】

使用「 show character set; 」來檢視:

檢視當前mysql的字符集設定情況

使用" show variables like 'character_set%' "

|variable_name                  |      value    |

| character_set_client             |      utf8      |----------客戶端字符集

| character_set_connection      |      utf8      |----------連線字符集

| character_set_database        |      utf8      |----------資料庫字符集,配置檔案指定或建庫建表指定

| character_set_filesystem      |     binary    |----------

| character_set_results           |       utf8     |----------返回結果字符集

| character_set_server           |     latin1     |---------伺服器字符集,配置檔案指定或建庫建表指定

| character_set_system          |     utf8        |

【使用"set names ****"解決亂碼問題】

我們先在mysql預設建立的test資料庫中建立乙個"user"表

然後我們來為user表新增一些資料:

會發現,插入英文都正常,但是一旦插入中文會出現「 incorrect string value:"\xd5\xc5\xc8\xfd" for column 'name' at row 1 」的錯誤。

我們先檢視一下其資料庫test的字元編碼,預設是latin1編碼的

再檢視一下表user的字元編碼:同樣是latin編碼

對應於資料庫和表均為latin1編碼的情況,如何可以插入中文資料呢?如下:

使用"set names latin1;"設定編碼,然後插入中文字段即可。

接下來查詢一下,關閉cmd,重新開啟乙個cmd重新登入,進行查詢操作。

發現查詢出來又是亂碼,我們再處理一下,

於是可以得出,要根據被查詢的資料庫和表的本身的字元編碼來進行對應的" set names  **** "進行處理。

再來看看"set names ****"的具體作用:

先看下資料庫test的預設情況下的字符集設定情況:

使用「set names utf8;」 再看下結果:

03 mysql認證方法

只介紹mysql native password認證方法 客戶端期望乙個20位元組的隨機加密字元,參考handshakev10握手報文的auth plugin data part 1和auth plugin data part 2,這個兩個字段組合在一起是20個位元組的加密字元 客戶端根據下面描述的...

Ubuntu中處理Mysql中文亂碼處理

登陸mysql檢視mysql編碼 mysql u root p show variables like char 如圖,但是我的是已經處理過的,未處理前有兩個是latin1 配置mysql字符集 2.1 vi etc mysql mysql.conf.d mysqld.cnf 在檔案末尾新增 cha...

mysql處理中文亂碼的問題

1,使用這個語句檢視當前的編碼 show variables like char 1 編碼解釋 character set client mysql使用該編碼來解讀客戶端傳送過來的資料,例如該編碼為utf8,那麼如果客戶端傳送過來的資料不是utf8,那麼就會出現亂碼 character set re...