MySQL數(shù)據(jù)庫(kù)中文變問(wèn)號(hào)'???' 解決
今天遇到了一個(gè)問(wèn)題,后端邏輯處理完存到MySQL數(shù)據(jù)庫(kù)里的中文內(nèi)容都變成問(wèn)號(hào) ‘???’了。 第一反應(yīng)是我數(shù)據(jù)庫(kù)的排序規(guī)則搞錯(cuò)啦? 馬上登上phpadmin看了一眼,沒(méi)毛病 都是utf8_general_ci,手動(dòng)修改問(wèn)號(hào)成中文也都正常顯示。 這里要說(shuō)一下另外一個(gè)問(wèn)題,開(kāi)始沒(méi)注意這個(gè)排序規(guī)則,默認(rèn)的是latin1。導(dǎo)致的問(wèn)題就是數(shù)據(jù)表中完全不能顯示中文,不是亂碼 是直接報(bào)錯(cuò)。
好啦,既然不是這個(gè)問(wèn)題,那又是什么呢?
在網(wǎng)上找了一下,問(wèn)題還挺“普遍的”。大致上就是字符集編碼問(wèn)題,改一下就好了,下面是我找到的解決方式(參考其他答主 因?yàn)樘闼榱司筒灰灰毁N參考鏈接了 再說(shuō)我也實(shí)在不知道哪個(gè)才是原答主【ε=ε=ε=┏(゜ロ゜;)┛】):系統(tǒng)環(huán)境是Ubuntu 14.04,Windows請(qǐng)找my.ini。
1.
- sudo vi /etc/mysql/my.cnf
2.在[client]/[mysqld_safe]/[mysql]下面依次加入
- default-character-set=utf8
- 在[mysqld]下面加入
- init_connect=’SET collation_connection = utf8_unicode_ci’
- init_connect=’SET NAMES utf8’
- character-set-server=utf8
- collation-server=utf8_unicode_ci
- skip-character-set-client-handshake
3.重啟mysql
- sudo /etc/init.d/mysql restart
按照網(wǎng)上其他答案 這時(shí)候應(yīng)該可以了。但是……
what???我發(fā)現(xiàn)并沒(méi)有什么用呀?!!!
好吧,下面 才是我真正想說(shuō)的 :
首先第一步,修改這些配置文件的時(shí)候,你會(huì)發(fā)現(xiàn)它們是read only 也就只讀的。所以我們理所應(yīng)當(dāng)?shù)那孟铝讼旅娴拿?/p>
- sudo chmod -R 777 /ect/MySQL/my.cnf
(我知道這不是個(gè)好習(xí)慣,但是真的很多人都這是這么做的-/-)
好的,這個(gè)時(shí)候終于可以修改my.cnf啦
這個(gè)時(shí)候,有的同學(xué)可以順利的修改 進(jìn)行下一步啦。但是!!!以我為代表的另一部分同學(xué)就倒霉啦,打開(kāi) my.cnf 一看…… what?? 基本就是個(gè)空的,毛都沒(méi)有?!好啦好啦 請(qǐng)坐下,這個(gè)時(shí)候你要看一看下邊是不是有個(gè) include****** 對(duì)記住后邊的文件 去這些文件里做修改就行啦。其實(shí),你直接把需要修改的內(nèi)容寫(xiě)在 my.cnf中也是可以的,我就這么干了。
終于到了最后一步,重啟完 mysql,又試了一下,還是亂碼……
問(wèn)題出在哪呢?請(qǐng)跟我做:
- sudo mysql -u root -q
回車之后,會(huì)有個(gè)warning /etc/mysql/my.cnf Ignore
意思是my.cnf被忽略了。它被忽略了 那我們的修改肯定沒(méi)有用了呀。
其實(shí),我們一開(kāi)始修改了它的讀寫(xiě)權(quán)限是 777,所有人都可以讀寫(xiě)它。系統(tǒng)認(rèn)為它不安全,才有了這個(gè)warning。
所以再我們修改完之后,要再改一下它的權(quán)限,比如 644?
好的 現(xiàn)在重啟mysql 再實(shí)驗(yàn)一下 沒(méi)問(wèn)題啦!!!
ps: 查看mysql 字符集編碼命令:
- sudo mysql -u root -p
進(jìn)入mysql 然后輸入命令
- show variables like ‘%character%’;
就可以看到了 沒(méi)截圖 就不放了。
啰里啰唆說(shuō)了一堆,主要是把我遇到的坑記錄一下。如果對(duì)你有幫助 那我也很開(kāi)心。