设置mysql的字符编码解决中文乱码问题
配置說明
mysql5提供了以下幾個設置字符集的系統變量:
character_set_client 客戶端字符集
character_set_connection 客戶端與服務器端連接采用的字符集
character_set_results SELECT查詢返回數據的字符集
character_set_database 數據庫采用的字符集
亂碼問題一般是由于以上幾個變量設置錯誤照成的,所以只要理解這幾個變量,就可以告別亂碼了。
使用上述變量,要理解這個核心思想:
character_set_client、character_set_connection、character_set_database編碼要一致;
character_set_results則保證與SELECT返回的結果與當前程序的編碼一致。
我們可以在程序中使用 set names來同時設置character_set_client, character_set_connection, character_set_results這三個系統變量。
例如set names 'utf8'等同于 :
set character_set_client = ‘utf8’
set character_set_connection = ‘utf8’
set character_set_results = ‘utf8’
一般情況下,當數據庫與數據庫表的字符集為utf8,我們再在程序里設置set names 'utf8’命令,這樣就能保證無亂碼了,但是,這里還要注意character_set_results變量的值,character_set_results的字符值是用來顯示返回給用戶的編碼的。
例如,你的數據庫(character_set_database)用的是utf8的字符集,那么你就要保證character_set_client,character_set_connection也是utf8的字符集。而你的程序也許采用的并不是utf8,比如你的程序用的是gbk,那么你若把character_set_results也設置為utf8的話就會出現亂碼問題。此時你應該把character_set_results設置為gbk。這樣就能保證數據庫返回的結果與你的程序的編碼一致。
全局設置,重啟失效
設置全局的數據庫字符編碼,即使基于整個MySQL服務的,當重啟MySQL服務的時候,編碼依然會變為原來的字符編碼
set global character_set_database=gbk;
set global character_ser_server=gbk;
show variables like ‘%char%’;
永久設置
設置永久的字符編碼,即需要在配置文件中修改數據庫的字符編碼
編輯 /etc/my.cnf,
在里面加入,已經有[XXX]的,在里面直接加入即可。
[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
然后重啟數據庫即可,service mysql restart.
參考鏈接:
https://blog.csdn.net/zhaojunjie_dream/article/details/79979672
https://www.cnblogs.com/xbq8080/p/6572133.html
總結
以上是生活随笔為你收集整理的设置mysql的字符编码解决中文乱码问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【收藏】Docker安装微信
- 下一篇: PostgreSQL新手入门教程