mysql 字符集設定

2021-07-10 14:05:17 字數 3304 閱讀 1777

一、mysql字符集設定

(1)       系統變數:

– character_set_server:預設的內部操作字符集

– character_set_client:客戶端**資料使用的字符集

– character_set_connection:連線層字符集

– character_set_results:查詢結果字符集

– character_set_database:當前選中資料庫的預設字符集

– character_set_system:系統元資料(欄位名等)字符集

– 還有以collation_開頭的同上面對應的變數,用來描述字元序。

(2)       用introducer指定文字字串的字符集:

– 格式為:[_charset]』string』 [collate collation]

– 例如:

select _latin1 』string』;

select _utf8 『你好』 collate utf8_general_ci;

– 由introducer修飾的文字字串在請求過程中不經過多餘的轉碼,直接轉換為內部字符集處理。

二、mysql中的字符集轉換過程

(1)       mysql server收到請求時將請求資料從character_set_client轉換為character_set_connection;

(2)       進行內部操作前將請求資料從character_set_connection轉換為內部操作字符集,其確定方法如下:

- 使用每個資料字段的character set設定值;

- 若上述值不存在,則使用對應資料表的default character set設定值(mysql擴充套件,非sql標準);

- 若上述值不存在,則使用對應資料庫的default character set設定值;

- 若上述值不存在,則使用character_set_server設定值。

三、mysql

預設字符集

mysql

對於字符集的指定可以細化到乙個資料庫,一張表,一列

.傳統的程式在建立資料庫和資料表時並沒有使用那麼複雜的配置,它們用的是預設的配置

.(1)     

編譯mysql

時,指定了乙個預設的字符集,這個字符集是

latin1

;(2)     

安裝mysql

時,可以在配置檔案

(my.ini)

中指定乙個預設的的字符集,如果沒指定,這個值繼承自編譯時指定的;

(3)     

啟動mysqld

時,可以在命令列引數中指定乙個預設的的字符集,如果沒指定,這個值繼承自配置檔案中的配置,此時

character_set_server

被設定為這個預設的字符集;

(4)     

安裝mysql

選擇多語言支援,安裝程式會自動在配置檔案中把

default_character_set

設定為utf-8

,保證預設情況下所有的資料庫所有表的所有列的都用

utf-8

儲存。四、修改預設字符集

(1)        

最簡單的修改方法,就是修改

mysql

的my.cnf(這裡注意:windows 是

my.ini)

檔案中的字符集鍵值,

修改完後,重啟

mysql

的服務(2)       

還有一種修改字符集的方法,就是使用

mysql

的命令設定了表的預設字符集為

utf8

並且通過

utf-8

編碼傳送查詢,存入資料庫的仍然是亂碼。那

connection

連線層上可能出了問題。解決方法是在傳送查詢前執行一下下面這句:

set names 'utf8';

它相當於下面的三句指令:

五、使用

mysql

字符集時的建議

(1)建立資料庫

/表和進行資料庫操作時盡量顯式指出使用的字符集,而不是依賴於

mysql

的預設設定,否則

mysql

公升級時可能帶來很大困擾;

資料庫和連線字符集都使用

latin1

時,雖然大部分情況下都可以解決亂碼問題,但缺點是無法以字元為單位來進行

sql操作,一般情況下將資料庫和連線字符集都置為

utf8

是較好的選擇;

(2)使用mysql capi

(mysql提供c

語言操作的

api)時,初始化資料庫控制代碼後馬上用

mysql_options

設定mysql_set_charset_name

屬性為utf8

,這樣就不用顯式地用

set names

語句指定連線字符集,且用

mysql_ping

重連斷開的長連線時也會把連線字符集重置為

utf8;

(3)對於

mysql php api

,一般頁面級的

php程式總執行時間較短,在連線到資料庫以後顯式用

set names

語句設定一次連線字符集即可;但當使用長連線時,請注意保持連線通暢並在斷開重連後用

set names

語句顯式重置連線字符集。

六、其他注意事項

my.cnf

中的default_character_set

設定只影響

mysql

命令連線伺服器時的連線字符集,不會對使用

libmysqlclient

庫的應用程式產生任何作用!

對欄位進行的

sql函式操作通常都是以內部操作字符集進行的,不受連線字符集設定的影響。

mysql字符集設定

show variables like char show variables like collation 2.修改編碼 set variable name value set character set connection utf8 3 顯示建立資料庫資訊 show create databa...

mysql 字符集設定

1.檢視mysql能夠支援的多種字符集 show character set 檢視mysql能夠支援的字符集的校對規則 show collation show collation like utf8 2.檢視當前字符集及校對 show variables like character set sho...

MySQL字符集設定

一 mysql字符集設定 1 系統變數 character set server 預設的內部操作字符集 character set client 客戶端 資料使用的字符集 character set connection 連線層字符集 character set results 查詢結果字符集 ch...