mysql特殊编码_Mysql 字符编码
知識補(bǔ)充:數(shù)據(jù)庫字符編碼
一、MySQL支持的字符集
1.查看所有可用的字符集
show character set;
或者查看information_schema.character_sets,也可以顯示所有的字符集和該字符集默認(rèn)的校隊規(guī)則
2.MySQL的字符集包括字符集(character)和校對規(guī)則(collation)兩個概念。
1)字符集用來定義MySQL存儲字符串的方式
2)校對規(guī)則用來定義 字符串比較的方式
3)字符集和校對規(guī)則是一對多的關(guān)系,一個字符集有多個校對規(guī)則供你選擇!
校對規(guī)則命名約定:它們以相關(guān)的字符集名開始,通常包括一個語言名,并且以
_ci(忽略大小寫)、
_cs(大小寫敏感)或者
_bin(二元,即比較是基于字符編碼的值而與language無關(guān))結(jié)束。
查看字符集的校對規(guī)則:
show collation like '字符集前綴%';
二、MySQL內(nèi)部的字符集和校對規(guī)則設(shè)置
1.服務(wù)器字符集和校對規(guī)則設(shè)置
暫時了解一下即可
2.數(shù)據(jù)庫字符集和校對規(guī)則設(shè)置
CREATE DATABASE db_name
[[DEFAULT] CHARACTER SET charset_name]
[[DEFAULT] COLLATE collation_name]
查看當(dāng)前數(shù)據(jù)庫的字符集和校對規(guī)則:
show variables like 'character_set_database';
show variables like 'collation_database';
ALTER DATABASE db_name
[[DEFAULT] CHARACTER SET charset_name]
[[DEFAULT] COLLATE collation_name]
3.表字符集和校對規(guī)則設(shè)置
CREATE TABLE tbl_name (column_list)
[DEFAULT CHARACTER SET charset_name [COLLATE collation_name]]
ALTER TABLE tbl_name
[DEFAULT CHARACTER SET charset_name] [COLLATE collation_name]
4.字段(列)字符集和校對規(guī)則
遇到這種情況概率比較小,這只是MySQL提供給我們一個靈活設(shè)置的手段
三、MySQL連接字符集設(shè)置
過程中要設(shè)置正確,誠實守信,這樣子如果全部設(shè)置正常,服務(wù)器端會自動的去按照你設(shè)置的字符集轉(zhuǎn)換,但是也要避免想換轉(zhuǎn)換的過程,最好都設(shè)置成一樣的編碼!
連接字符集設(shè)置:客戶端和服務(wù)器之間交互的字符集
1.對于客戶端和服務(wù)器段的交互操作,MySQL提供了3個不同的參數(shù):
1)character_set_client:客戶端來源數(shù)據(jù)使用的字符集
2)character_set_connection:連接層字符集
3)character_set_results:返回結(jié)果字符集
知識拓展:數(shù)據(jù)在客戶端和服務(wù)器之間交互的過程中字符集轉(zhuǎn)換的大概過程
1) MySQL Server收到請求時將請求數(shù)據(jù)從character_set_client轉(zhuǎn)換為character_set_connection;
2) 進(jìn)行內(nèi)部操作前將請求數(shù)據(jù)從character_set_connection轉(zhuǎn)換為內(nèi)部操作字符集,內(nèi)部操作字符集的確定方法如下:
1>使用每個數(shù)據(jù)字段設(shè)定的字符集;
2>若上述值不存在,則使用對應(yīng)數(shù)據(jù)表設(shè)定的字符集;
3>若上述值不存在,則使用對應(yīng)數(shù)據(jù)庫設(shè)定的字符集;
4>若上述值不存在,則使用服務(wù)器設(shè)定的字符集。
3) 將操作結(jié)果從內(nèi)部操作字符集轉(zhuǎn)換為character_set_results。
這3個參數(shù)設(shè)定的字符集應(yīng)該相同,并且客戶端使用的字符集確實是參數(shù)character_set_client的值,才可以確保用戶的數(shù)據(jù)可以正確的返回且輸出。
查看當(dāng)前設(shè)置:show variables like 'character_set%';
修改:
set names 字符集,可以同時修改3個參數(shù)的值,對本次有效
也可以在配置文件中設(shè)置:
[mysql]
default-character-set=字符集
修改CMD命令行字符集:
chcp 65001 #換成utf-8代碼頁(設(shè)置為utf-8之后最好手動修改顯示字體 )
chcp 936 #換成默認(rèn)的gbk
客戶端使用字符,連接層使用的字符集,內(nèi)部使用的字符集,返回使用的字符集,最好都設(shè)置層一樣的,并且客戶端使用的字符集確實是character_set_client參數(shù)的值,這樣就絕對不會出現(xiàn)問題!
總結(jié)
以上是生活随笔為你收集整理的mysql特殊编码_Mysql 字符编码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c++ 人脸识别_应用层下的人脸识别(四
- 下一篇: linux mysql怎么启动_linu