1 檢視mysql編碼
show variables like 'char%';
因為當初安裝時指定了字符集為utf8,所以所有的編碼都是utf8。
l character_set_client:你傳送的資料必須與client指定的編碼一致!!!伺服器會使用該編碼來解讀客戶端傳送過來的資料;
l character_set_connection:通過該編碼與client一致!該編碼不會導致亂碼!當執行的是查詢語句時,客戶端傳送過來的資料會先轉換成connection指定的編碼。但只要客戶端傳送過來的資料與client指定的編碼一致,那麼轉換就不會出現問題;
l character_set_database:資料庫預設編碼,在建立資料庫時,如果沒有指定編碼,那麼預設使用database編碼;
l character_set_server:mysql伺服器預設編碼;
l character_set_results:響應的編碼,即查詢結果返回給客戶端的編碼。這說明客戶端必須使用result指定的編碼來解碼;
2 控制台編碼
修改character_set_client、character_set_results、character_set_connection為gbk,就不會出現亂碼了。但其實只需要修改character_set_client和character_set_results。
控制台的編碼只能是gbk,而不能修改為utf8,這就出現乙個問題。客戶端傳送的資料是gbk,而character_set_client為utf8,這就說明客戶端資料到了伺服器端後一定會出現亂碼。既然不能修改控制台的編碼,那麼只能修改character_set_client為gbk了。
伺服器傳送給客戶端的資料編碼為character_set_result,它如果是utf8,那麼控制台使用gbk解碼也一定會出現亂碼。因為無法修改控制台編碼,所以只能把character_set_result修改為gbk。
l 修改character_set_client變數:set character_set_client=gbk;
l 修改character_set_results變數:set character_set_results=gbk;
設定編碼只對當前連線有效,這說明每次登入mysql提示符後都要去修改這兩個編碼,但可以通過修改配置檔案來處理這一問題:配置檔案路徑:d:\program files\mysql\mysql server 5.1\ my.ini
3 mysql工具
使用mysql工具是不會出現亂碼的,因為它們會每次連線時都修改character_set_client、character_set_results、character_set_connection的編碼。這樣對my.ini上的配置覆蓋了,也就不會出現亂碼了。
mysq中文編碼格式
1 修改資料庫編碼格式 mysql set names utf8 改變資料庫伺服器和客戶端的字符集 mysql alter database mydb character set utf8 更改庫字符集 2 連線字串中指定編碼 useunicode true characterencoding ut...
mysql思考7 關於Uber選擇MySQL的思考
在資料庫圈子,大家都知道今年uber幹出來一件大事件,把postgresql切換到了mysql,當時社群裡一陣喧嘩。事情已經過去半年多了,這裡我不想去和大家再次討論這兩個關係型資料庫那個更好。只是想帶著大家思考一下選擇的背後。在該事件中,uber提出來遷移的乙個重要原因是 在大量更新的業務場景下po...
關於mysql編碼問題
show variables like char 因為當初安裝時指定了字符集為utf8,所以所有的編碼都是utf8。l character set client 你傳送的資料必須與client指定的編碼一致!伺服器會使用該編碼來解讀客戶端傳送過來的資料 l character set connect...