您好,登錄后才能下訂單哦!
小編給大家分享一下如何解決linux下mysql亂碼的問(wèn)題,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
項(xiàng)目進(jìn)行到和服務(wù)器交互,通過(guò)post訪問(wèn)服務(wù)器端jsp,jsp訪問(wèn)服務(wù)器端mysql數(shù)據(jù)庫(kù),最終返回到客戶端的中文出現(xiàn)亂碼問(wèn)題。
在整個(gè)流程中,出現(xiàn)錯(cuò)誤的原因可能是三個(gè):post未設(shè)置編碼或者編碼不相符合,jdbc出現(xiàn)問(wèn)題,linux下mysql初始碼制問(wèn)題。
在經(jīng)過(guò)繁瑣的排查后,最終確定問(wèn)題為mysql編碼問(wèn)題。下文介紹如何解決linux下mysql中文亂碼問(wèn)題。
首先進(jìn)入mysql命令行模式,鍵入mysql -uroot -p 即可進(jìn)入。隨后鍵入 SHOW VARIABLES LIKE 'character_set_%';
若顯示內(nèi)容類似這樣:
+--------------------------+----------------------------------------------+ | Variable_name | Value | +--------------------------+----------------------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /alidata/server/mysql-5.1.73/share/charsets/ |
則已修改正確,而mysql默認(rèn)初始設(shè)置的都是latin1而非utf8。
一種解決方法是更改表格的屬性設(shè)置為utf8或者在創(chuàng)建表格的時(shí)候在最后加上DEFAULT CHARSET=utf8
。設(shè)置表格為utf8碼。這樣的方法有可能失效。
最根本的解決方法是打開(kāi)mysql配置文件修改。linux下mysql配置文件名為my.cnf,目錄為/etc/my.cnf,打開(kāi)后按照以下操作:
--在 [mysqld] 標(biāo)簽下加上三行 default-character-set = utf8 character_set_server = utf8 lower_case_table_names = 1 //表名不區(qū)分大小寫(此與編碼無(wú)關(guān)) --在 [mysql] 標(biāo)簽下加上一行 default-character-set = utf8 --在 [mysql.server]標(biāo)簽下加上一行 default-character-set = utf8 --在 [mysqld_safe]標(biāo)簽下加上一行 default-character-set = utf8 --在 [client]標(biāo)簽下加上一行 default-character-set = utf8
上述標(biāo)簽若未能全部找到也沒(méi)關(guān)系。再次打開(kāi)mysql命令行,執(zhí)行SHOW VARIABLES LIKE 'character_set_%';
后若仍存在latin1,則在mysql命令行下執(zhí)行以下命令:
set character_set_client = utf8;
set character_set_server = utf8;
set character_set_connection = utf8;
set character_set_database = utf8;
set character_set_results = utf8;
set collation_connection = utf8_general_ci;
set collation_database = utf8_general_ci;
set collation_server = utf8_general_ci;
執(zhí)行后再執(zhí)行上述show 命令可得到目標(biāo)結(jié)果。
設(shè)置完成后需要重新啟動(dòng)mysql,重啟命令 /etc/init.d/mysqld restart 。
原數(shù)據(jù)表需要?jiǎng)h除后重建。
最終完成,大功告成。
小結(jié)
1、修改/etc/my.cnf文件,增加以下幾行:
[client] # pipe= # socket=MYSQL port=3306 default-character-set=utf8 [mysql] no-beep # default-character-set= default-character-set=utf8 # SERVER SECTION # ---------------------------------------------------------------------- # The following options will be read by the MySQL Server. Make sure that # you have installed the server correctly (see above) so it reads this # file. # server_type=3 [mysqld] character_set_server=utf8
2、重啟mysql服務(wù):
service mysql stop; service mysql status; service mysql start; 或者 service mysql restart;
以上是“如何解決linux下mysql亂碼的問(wèn)題”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。