【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...