mysql linux

artType02.jpg Linux下mysql中文亂碼解決方案
2013-01-26 23:53:06
標籤:mysqlLinux

中文存入 mysql 數據庫出現的亂碼,從 JSP 頁面讀取 mysql 中文數據出現亂碼,以及在 sell 環境下查看數據庫表中文數據出現亂碼。爲了解決中文亂碼問題,首先是採用同一字符集。本人採用的是Gbk.

1.安裝mysql後首先修改配置文件 /etc/my.cnf (注:可能安裝的目錄不同,通過搜索my.cnf這個文件就可以方便地找到my.cnf這個目錄)。找到my.cnf這個文件後,在文件中添加如下內容(注:只添加,文件中的其它內容不需要改變)。
[client]
default-character-set=gbk
[mysqld_safe]
default-character-set=gbk
[mysqld]
default-character-set=gbk
[mysql]
default-character-set=gbk
2. 重新啓動mysql服務,進入sell終端,進入mysql的命令提示符下輸入如下指令:
mysql>show variables like '%char%';
如果出現的列表各項內容和以下相同表明配置成功了,
+---------------------+---------------------
| Variable_name | Value
+-----------------------+---------------------
| character_set_client | gbk
| character_set_connection | gbk
| character_set_database | gbk
| character_set_filesystem | binary
| character_set_results | gbk
| character_set_server | gbk
| character_set_system | gbk
| character_sets_dir | /usr/share/mysql/charsets/
+---------------------+----------------------
3.到此基本上解決了mysql的中文亂碼問題。最好是重新啓動一下您的操作系統!這樣已做的改變都能及時的生效。
(如果還要出現亂碼的話,最好是寫一個過濾亂碼的過濾器,一切問題都會解決的).
4.在要發送中文或者要讀取中文的JSP頁面(最好所有頁面)都添加如下聲明:
<%@page pageEncoding="gbk"%>
<%@ page contentType="text/html;charset=gbk"%>
<% request.setCharacterEncoding("gbk"); %>
<head>標籤對中添加如下:
<meta http-equiv="Content-Type" content="text/html; charset=gbk">
注意在servlet中對請求進行響應的方法中同樣要有:
response.setContentType("text/html;charset=gbk");
(由於不明原因firefox發送的請求仍然是latin1的時候執行這一步)
在將請求的參數插入數據庫之前還要再執行一次轉碼(latin1編碼轉換爲utf-8),例如:
String utf8_str= new String(latin_str.getBytes("latin1"),"gbk");
這一步可以寫在一個過濾器中,不怕麻煩也可以在每一次在將請求數據插入之前都進行一次轉碼。
另外:在連接數據庫的時候可以不用加上字符集參數了,直接用用戶名和密碼連接就可以了,如連接:
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/數據庫名","用戶名","密碼");


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章