linux下mysql亂碼問題的解決方案
項目進行到和服務器交互,通過post訪問服務器端jsp,jsp訪問服務器端mysql數(shù)據(jù)庫,最終返回到客戶端的中文出現(xiàn)亂碼問題。
在整個流程中,出現(xiàn)錯誤的原因可能是三個:post未設置編碼或者編碼不相符合,jdbc出現(xiàn)問題,linux下mysql初始碼制問題。
在經過繁瑣的排查后,最終確定問題為mysql編碼問題。下文介紹如何解決linux下mysql中文亂碼問題。
首先進入mysql命令行模式,鍵入mysql -uroot -p 即可進入。隨后鍵入 SHOW VARIABLES LIKE 'character_set_%';
若顯示內容類似這樣:
+--------------------------+----------------------------------------------+ | 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默認初始設置的都是latin1而非utf8。
一種解決方法是更改表格的屬性設置為utf8或者在創(chuàng)建表格的時候在最后加上DEFAULT CHARSET=utf8
。設置表格為utf8碼。這樣的方法有可能失效。
最根本的解決方法是打開mysql配置文件修改。linux下mysql配置文件名為my.cnf,目錄為/etc/my.cnf,打開后按照以下操作:
--在 [mysqld] 標簽下加上三行 default-character-set = utf8 character_set_server = utf8 lower_case_table_names = 1 //表名不區(qū)分大小寫(此與編碼無關) --在 [mysql] 標簽下加上一行 default-character-set = utf8 --在 [mysql.server]標簽下加上一行 default-character-set = utf8 --在 [mysqld_safe]標簽下加上一行 default-character-set = utf8 --在 [client]標簽下加上一行 default-character-set = utf8
上述標簽若未能全部找到也沒關系。再次打開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 命令可得到目標結果。
設置完成后需要重新啟動mysql,重啟命令 /etc/init.d/mysqld restart 。
原數(shù)據(jù)表需要刪除后重建。
最終完成,大功告成。
小結
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服務:
service mysql stop; service mysql status; service mysql start; 或者 service mysql restart;
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內容請查看下面相關鏈接
相關文章
mysql5.6及以下版本如何查詢數(shù)據(jù)庫里的json
MySQL里面保存數(shù)據(jù)有時候會把一些雜亂且不常用的時候丟進一個json字段里面,那么如何查詢數(shù)據(jù)庫里的json呢以及mysql存儲json注意那些格式呢?接下來通過本文給大家詳細介紹,需要的朋友參考下2017-03-03簡單了解操作mysql數(shù)據(jù)庫的命令行神器mycli
這篇文章主要介紹了簡單了解操作mysql數(shù)據(jù)庫的命令行神器mycli,今天發(fā)現(xiàn)一個操作數(shù)據(jù)庫的命令行工具,可以自動補全和語法高亮,,需要的朋友可以參考下2019-06-06windows下mysql 5.7版本中修改編碼為utf-8的方法步驟
mysql的默認編碼是拉?。╨atin1),當輸入中文的時候就會報錯,所以需要將編碼修改為utf8,從網上找了相關教程都不可以,索性自己摸索后分享給大家,下面這篇文章主要給大家介紹了在mysql 5.7版本中如何修改編碼為utf-8的方法步驟,需要的朋友可以參考下。2017-06-06