使用Navicat存儲中文數(shù)據(jù)出現(xiàn)亂碼或者空白的問題。經(jīng)過一番折騰終于得到解決。 表my_chat設計如下:
在數(shù)據(jù)庫chatroom上右擊打開console控制臺,輸入SHOW VARIABLES LIKE '%character_%'; 可以看到MySQL 相關編碼的設置,全部修改為utf8后如下:
若編碼不統(tǒng)一可以參照這篇文章修改:MySQL 編碼設置http://eagletff.blog.163.com/blog/static/116350928201171543523558 1、編輯MySQL 的配置文件
開始的時候是author與emotion字段中文亂碼:
按上述方法,我在自己的my.ini中只找到了[client]和[mysql]兩項,按上述方法修改后,保存的時候提示含有unicode字符,于是我另存,替換,但是 在重新啟動MySQL 服務的時候一直失敗。 最終發(fā)現(xiàn)該配置文件重新改回ANSI編碼后,再加入上述修改,可正常啟動MySQL 。 新的問題出現(xiàn):字符類型為varchar的字段中文顯示為空白(author和emotion字段),
此法不奏效。 網(wǎng)上找到的第二種方法:Navicat for MySQL 顯示中文亂碼解決辦法
最近遇到一個問題,用Navicat for MySQL 打開數(shù)據(jù)庫時全都顯示的是亂碼(在用程序代碼插入數(shù)據(jù)之前確保字符不是亂碼),遇到問題就的尋求解決之道,百度了好長時間也沒解決,網(wǎng)上那些解決辦法都不適合我的問題,網(wǎng)上的大多數(shù)解決方法是在navicat里右擊一個連接,選擇連接屬性,切換到高級選項卡,去掉“使用MySQL 字符集”前的對勾,在編碼里選擇utf-8,這種方法對于部分問題可能適合,但是我的亂碼問題依然存在,于是乎我又將utf-8改稱gbk,gb2312,全都過問題依然粹依舊。 上述方法后半部分跟第一種方法一樣,他這里解決了,但是我沒能實現(xiàn)。 反而是利用紅色部分的方法找到了解決辦法。 在navicat里右擊一個連接,選擇連接屬性,切換到高級選項卡,去掉“使用MySQL 字符集”前的對勾,在編碼里選擇Default 我在編碼里選擇utf8之后,
查看表時,又出現(xiàn)了空白
最終解決辦法是,在最后編碼的地方不是選擇utf8而是Default。熟悉的中文就回來了!
總結:一般的解決辦法兩種: 1、修改MySQL 的配置文件在相對應的位置添加如下代碼 重啟服務。 但是可能導致無法重啟,可以把配置文件編碼修改為ANSI試試。 2、
在navicat里右擊一個連接,選擇連接屬性,切換到高級選項卡,去掉“使用MySQL 字符集”前的對勾,在編碼里選擇Default 也有人編碼的地方可能是“Current Windows Codepage”,此法不修改my.ini。
注:
要保證不亂碼,就必須將三個編碼統(tǒng)一:一是網(wǎng)頁自身的編碼,二是HTML里指定的編碼,三是PHP告訴Mysql的編碼(包括character_set_client和character_set_results)。
最后貼幾個比較有參考意義的文章:
MySQL 編碼設置 http://eagletff.blog.163.com/blog/static/116350928201171543523558
Navicat for MySQL 顯示中文亂碼解決辦法http://blog.163.com/chenyao_2000/blog/static/1280109302011431476629/
MySQL 中文亂碼解決 http://jingyan.baidu.com/article/e4d08ffdd9bd630fd2f60de6.html
MySQL插入中文顯示不了的問題 http://hi.baidu.com/yulewujixian/item/8a2e80ec9be075b52f140b23 PHP和MySQL的編碼問題 http://blog.csdn.net/martinkro/article/details/5352474
中文常用編碼方式(GBK,GB2312,Unicode) http://blog.sina.com.cn/s/blog_5ac88b350100c2bx.html
UNICODE,GBK,UTF-8區(qū)別 http://www.cnblogs.com/cy163/archive/2007/05/31/766886.html |
|