1. 程式人生 > 資料庫 >linux下mysql亂碼問題的解決方案

linux下mysql亂碼問題的解決方案

專案進行到和伺服器互動,通過post訪問伺服器端jsp,jsp訪問伺服器端mysql資料庫,最終返回到客戶端的中文出現亂碼問題。

在整個流程中,出現錯誤的原因可能是三個:post未設定編碼或者編碼不相符合,jdbc出現問題,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或者在建立表格的時候在最後加上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 //表名不區分大小寫(此與編碼無關)
--在 [mysql] 標籤下加上一行
default-character-set = utf8
--在 [mysql.server]標籤下加上一行
default-character-set = utf8
--在 [mysqld_safe]標籤下加上一行
default-character-set = utf8
--在 [client]標籤下加上一行
default-character-set = utf8

上述標籤若未能全部找到也沒關係。再次開啟mysql命令列,執行SHOW VARIABLES LIKE 'character_set_%';後若仍存在latin1,則在mysql命令列下執行以下命令:

  • 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;

執行後再執行上述show 命令可得到目標結果。

設定完成後需要重新啟動mysql,重啟命令/etc/init.d/mysqld restart 。

原資料表需要刪除後重建。

最終完成,大功告成。

小結

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;

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對我們的支援。如果你想了解更多相關內容請檢視下面相關連結