MySQL数据库:编码
1、查看MySQL編碼
SHOW VARIABLES LIKE 'char%';因為當初安裝時指定了字符集為UTF8,所以所有的編碼都是UTF8。
- character_set_client:你發送的數據必須與client指定的編碼一致!!!服務器會使用該編碼來解讀客戶端發送過來的數據;
- character_set_connection:通過該編碼與client一致!該編碼不會導致亂碼!當執行的是查詢語句時,客戶端發送過來的數據會先轉換成connection指定的編碼。但只要客戶端發送過來的數據與client指定的編碼一致,那么轉換就不會出現問題;
- character_set_database:數據庫默認編碼,在創建數據庫時,如果沒有指定編碼,那么默認使用database編碼;
- character_set_server:MySQL服務器默認編碼;
- 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。
- 修改character_set_client變量:set character_set_client=gbk;
- 修改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上的配置覆蓋了,也就不會出現亂碼了。
總結
以上是生活随笔為你收集整理的MySQL数据库:编码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL数据库:完整性约束
- 下一篇: JavaWeb:JavaScript