一、中文數(shù)據的本質是字符集問題
計算機只識別二進制,所以需要有一個二進制與字符的對應關系(字符集)
1.查看所有字符集
show character set;
2.查看服務器默認對外處理的字符集
show variables like 'character_set%';
3.客戶端數(shù)據只能是GBK,而服務器認為是utf8,所以需要改變服務器默認接收字符集為GBK
set character_set_client = gbk;
4.客戶端向服務器插入中文數(shù)據:
查看數(shù)據效果時:數(shù)據來源是服務器,解析數(shù)據是客戶端(客戶端只識別gbk:只會兩個字節(jié)一個漢字)但服務器給數(shù)據確實utf8(三個字節(jié)一個漢字)所以出現(xiàn)亂碼
5.修改服務器給客戶端的數(shù)據字符集為gbk
set character_set_results = gbk;
6.查看數(shù)據效果
set 變量 = 值;修改只是會話級別(當前客戶端,當次鏈接有效;關閉失效)
快捷設置字符集
set names 字符集
二、web亂碼問題
動態(tài)網站由三部分構成:瀏覽器,apache服務器(PHP),數(shù)據庫服務器;三部分都有其自己的字符集(中文),數(shù)據需要在三部分之間傳遞,容易出現(xiàn)亂碼。所以需要 統(tǒng)一編碼(三碼合一)
亂碼問題解決:
三、校對集問題
校對集:數(shù)據比較方式
校對集有三種格式:
_bin:binary,二進制比較,取出二進制位,一位一位的比較,區(qū)分大小寫
_cs:case sensitive,大小寫敏感,區(qū)分大小寫
_ci:case insensitice,大小寫不敏感,不區(qū)分大小寫
查看數(shù)據庫所支持的校對集
show collation;
校對集應用:當數(shù)據產生比較的時候,校對集才會生效。
1.使用utf8的_bin和_ci來驗證不同校對集的效果
①創(chuàng)建不同校對集對應的表
②插入數(shù)據
③比較:根據某個字段進行排序
order by <字段名> [asc/desc]; asc升序,desc降序,默認是升序
校對集:必須在沒有數(shù)據之前聲明好,如果有了數(shù)據,那么再進行校對修改,修改無效。