mysql乱码问题_mysql乱码问题
mysql亂碼問題
出現亂碼的原因:因為當前的CMD客戶端窗口與數據庫本身及庫,表的編碼格式不一致導致的。所以當出現亂碼的時候,請排查:
* sql文件的編碼格式
* 當前CMD客戶端窗口的編碼格式
* 數據庫服務本身的編碼格式
* 數據庫的編碼格式
* 表結構的編碼格式
我一在次更新客戶環境中出現了,mysql命令source文件后,出現亂碼的情況。但是使用navicat執行sql確沒有問題。
這是命令行中查看字符編碼得到結果:
這是我使用navicat查看字符編碼得到的結果:
從上圖中可以看到MYSQL有六處使用了字符集,分別為:
與服務器端相關:database、server、system(永遠無法修改,就是utf-8);
database
為數據庫服務器中某個庫使用的字符集設定,如果建庫時沒有指明,將使用服務器安裝時指定的字符集設置
server
為服務器安裝時指定的默認字符集設定
system
為數據庫系統使用的字符集設定
與客戶端相關:connection、client、results :
client
為客戶端使用的字符集
connection
為連接數據庫的字符集調協類型,如果程序沒有指明連接數據庫使用的字符集類型則按照服務器端默認的字符集設置
results
為數據庫給客戶端返回時使用的字符集設定,如果沒有指明,使用服務器默認的字符集。
通過上圖和解釋,可以得出,只要客戶端與服務端的編碼格式不一致就會導致籌碼問題。只不過我這里只是這個問題,還有如表,數據庫,sql文件的字符編碼不一致,都會導致亂碼。
解決方法
一、 在當前的CMD中修改字符集,只不過只能在當前會話生效:
mysql > set names utf8;
二、在連接數據庫時就定義字符集編碼:
~]# mysql -uxxx -pxxx -hxxxx --default-character-set=utf8
三、最有效的辦法,就是在mysql服務器端修改mysql的配置文件,加入如下配置:
~]# cat /etc/my.cnf
[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8
總結
以上是生活随笔為你收集整理的mysql乱码问题_mysql乱码问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql订单详情的设计_订单功能模块设
- 下一篇: linux上源码安装mysql,Linu