mysql資料庫中文變問號

2021-07-31 14:39:11 字數 1840 閱讀 9540

今天遇到了乙個問題,後端邏輯處理完存到資料庫裡的中文內容都變成問號 『???』了。 第一反應是我資料庫的排序規則搞錯啦? 馬上登上phpadmin看了一眼,沒毛病 都是utf8_general_ci,手動修改問號成中文也都正常顯示。 這裡要說一下另外乙個問題,開始沒注意這個排序規則,預設的是latin1。導致的問題就是資料表中完全不能顯示中文,不是亂碼 是直接報錯。

好啦,既然不是這個問題,那又是什麼呢?

在網上找了一下,問題還挺「普遍的」。大致上就是字符集編碼問題,改一下就好了,下面是我找到的解決方式(參考其他答主 因為太零碎了就不一一貼參考鏈結了 再說我也實在不知道哪個才是原答主【ε=ε=ε=┏(゜ロ゜;)┛】):系統環境是ubuntu14 windows請找my.ini

sudo vi /etc/mysql/my.cnf

在[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

按照網上其他答案 這時候應該可以了。但是……

what???我發現並沒有什麼用呀?!!!

好吧,下面 才是我真正想說的 :

首先第一步,修改這些配置檔案的時候,你會發現它們是read only 也就唯讀的。所以我們理所應當的敲下了下面的命令

sudo chmod -r 777 /ect/mysql/my.cnf

(我知道這不是個好習慣,但是真的很多人都這是這麼做的-/-)

好的,這個時候終於可以修改my.cnf啦

這個時候,有的同學可以順利的修改 進行下一步啦。但是!!!以我為代表的另一部分同學就倒霉啦,開啟 my.cnf 一看…… what?? 基本就是個空的,毛都沒有?!好啦好啦 請坐下,這個時候你要看一看下邊是不是有個 include****** 對記住後邊的檔案 去這些檔案裡做修改就行啦。其實,你直接把需要修改的內容寫在 my.cnf中也是可以的,我就這麼幹了。

終於到了最後一步,重啟完 mysql,又試了一下,還是亂碼……

問題出在哪呢?請跟我做:

sudo mysql -u root -q

回車之後,會有個warning /etc/mysql/my.cnf ignore

意思是my.cnf被忽略了。它被忽略了 那我們的修改肯定沒有用了呀。

其實,我們一開始修改了它的讀寫許可權是 777,所有人都可以讀寫它。系統認為它不安全,才有了這個warning。

所以再我們修改完之後,要再改一下它的許可權,比如 644?

好的 現在重啟mysql 再實驗一下 沒問題啦!!!

ps: 檢視mysql 字符集編碼命令:

sudo mysql -u root -p

進入mysql 然後輸入命令

show variables like 『%character%』;

就可以看到了 沒截圖 就不放了。

囉裡囉唆說了一堆,主要是把我遇到的坑記錄一下。如果對你有幫助 那我也很開心。

java mysql插入資料庫中文變問號解決之道

1 my.ini 設定 utf 8 2 create database wood default character set utf8 collate utf8 general ci create table tbl privs role id int 11 not null auto increm...

springboot寫入資料庫漢字變問號???

用spring boot做的專案,後台向資料庫中寫入漢字,變成了問號,但是後台確實是向資料庫中傳遞的漢字,資料庫也是使用的utf8編碼,怎麼回事?檢查一下spring boot和資料庫中的連線問題 在a pp lica tion pro pert iesap plic atio n.pr oper ...

vs2019新建資料庫後插入中文變問號

在使用vs建立了資料庫後如果直接給字元型別插入中文內容的話查詢結果插入的中文會以 的格式展現。原因是因為預設建立的資料庫的排序型別為拉丁文不支援中文。所以需要講這個排序的字元格式進行修改 具體修改辦法 開啟查詢器 執行下面語句,將acount修改為你的資料庫名稱 如果你的資料庫帶有路徑,請使用中括號...