MySQL字符集問題

2021-08-29 01:46:30 字數 1596 閱讀 2109

mysql 4.x版本之前預設採用的是latin1字符集(又稱iso-8859-1),latin1字符集編碼方式採用單位元組編碼。拋乙個問題,latin1字符集的表,使用者寫入和讀取漢字是否有問題?答案是只要合理設定,沒有問題。假設securecrt為utf8,character_set_client和表字符集均設定為latin1,參考第3節的分析,那麼使用者讀取和寫入資料的過程中,並不涉及字符集編碼轉換的問題,將utf8的漢字字元轉為二進位製流寫入database,提取出來後,securecrt再將對應的二進位制解碼為對應的漢字,所以不影響使用者的使用。但是,若character_set_client,character_set_connection,與表字符集設定等不統一,就可能出現亂碼的情況。

只要涉及到文字的地方,就會存在字符集和編碼方式。對於mysql資料庫系統而言,使用者從mysql client端敲入一條sql語句,通過tcp/ip傳遞給mysql server程序,到最終存入server端的檔案,每個環節都涉及到字元儲存。涉及到字元儲存的地方,就涉及到字符集編碼,通過mysql提供的系統變數就可見一斑。mysql字符集設定系統變數以及含義如下表: 

只要涉及到文字的地方,就會存在字符集和編碼方式。對於mysql資料庫系統而言,使用者從mysql client端敲入一條sql語句,通過tcp/ip傳遞給mysql server程序,到最終存入server端的檔案,每個環節都涉及到字元儲存。涉及到字元儲存的地方,就涉及到字符集編碼,通過mysql提供的系統變數就可見一斑。mysql字符集設定系統變數以及含義如下表:

變數名含義

character_set_server

預設的內部操作字符集

character_set_client

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

character_set_connection

連線層字符集

character_set_results

查詢結果字符集

character_set_database

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

character_set_system

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

1.庫、表、列字符集的由來

(1).建庫時,若未明確指定字符集,則採用character_set_server指定的字符集。

(2).建表時,若未明確指定字符集,則採用當前庫所採用的字符集。

(3).新增,修改表字段時,若未明確指定字符集,則採用當前表所採用的字符集。

2.更新、查詢涉及到得字符集變數

使用者在更新(插入,刪除,修改),查詢資料庫時,最常使用的字符集變數主要包含character_set_client,character_set_connection,character_set_result。

更新流程字符集轉換過程:character_set_client-》character_set_connection-》表字符集。

查詢流程字符集轉換過程:表字符集-》character_set_result

3.character_set_database

這個引數是當前預設資料庫的字符集,比如執行use ***後,當前資料庫變為***,若***的字符集為utf8,那麼這個變數值就變為utf8。因此這個引數是供系統設定,無需人工設定。

**:

mysql字符集問題 mysql字符集問題

我們新建mysql資料庫的時候,需要指定資料庫的字符集,一般我們都是選擇utf8這個字符集,但是還會又乙個utf8mb4這個字符集,好像和utf8有聯絡,今天就來解析一下這兩者的區別。起源mysql在5.5.3之後增加了這個utf8mb4的編碼,mb4就是most bytes 4的意思,專門用來相容...

mysql字符集問題 mysql字符集問題

用show variables like char 檢視mysql的引數,結果應如下 mysql show variables like char variable name value character set client gbk character set connection gbk ch...

mysql字符集問題 MySql字符集問題

mysql字符集問題 xinjinlong 2010 11 14 22 10 47 閱讀 1334 上次說了一下c從mysql裡面讀取資料,這次在介紹一下如何把mysql的字符集設定為utf8 第一 檢視自己mysql的字符集 mysql show variables like character ...