jsp存取mysql中文資料結果為亂碼的解決方案

來源:互聯網
上載者:User
 

開發環境是:XP-sp2,Tomcat5.0,jdk1.42,mysql4.0.21-nt

在玩jsp時發現,jsp把中文資料存入mysql或者從mysql讀取出來顯示的是亂碼,無語,用百度搜了很多資料,解決問題。現總結一下。

解決方案一:

串連mysql時(無論在從mysql讀還是取資料的情況),指定使用的編碼方式為gb2312,具體代碼如下

 

//裝載mysql-jdbc驅動
Class.forName("com.mysql.jdbc.Driver").newInstance();
//串連資料庫
Connection sqlCon = DriverManager.getConnection( "jdbc:mysql://localhost:3306/test?user=root&password=1&useUnicode=true&characterEncoding=gb2312" );

解決方案二:

如果方法一不行那麼在方法一的基礎上對讀入的字串進行強制編碼方式轉換。

程式碼範例如下:

String name = rst.getString("name");
name= new String(name.getBytes("ISO-8859-1"),"gb2312");

註:代碼也可以為:String name =new String( rst.getString("name").getBytes("ISO-8859-1"),"gb2312"));其中rst為返回的resultset,ISO-8859-1為mysql預設的編碼方式,代碼的目的是把以ISO-8859-1的編碼轉換為gb2312編碼方式,這樣強制轉換,可以解決一部分問題,如果結合方法一,應該可以解決中文亂碼問題。

解決方案三:

這個方法在有些文章裡是首推的,我首先也是試了這個方法,但是好像不行。這裡還是說一下,不知是不是我操作錯誤。還是先貼原文吧:
"如果資料庫中有中文的話而mysql預設的語言不是中文時要在設定檔C:winntmy.ini 中的 [mysqld] 裡添加一行:
default-character-set=gbk
然後重起mysql"(原文地址:http://www.blogdriver.com/blog/tb.b?diaryID=338894)

我的是xp系統,所以my.ini在C:WINDOWS下,用editplus開啟,沒有修改過的代碼如下:
......
[mysqld]
basedir=E:/Program Files/mysql
#bind-address=192.168.0.150
......
[WinMySQLadmin]
Server=E:/Program Files/mysql/bin/mysqld-nt.exe
......
按照原文所說的,修改配置代碼如下:
......
[mysqld]
basedir=E:/Program Files/mysql
default-character-set=gbk
#bind-address=192.168.0.150
......
[WinMySQLadmin]
Server=E:/Program Files/mysql/bin/mysqld-nt.exe
......

然後重啟winmysqladmin.exe
如果沒有方法一和二為基礎的話,用這個方法我試過不行。有了方法一和二,即使不用方法三,我也解決了中文讀寫的亂碼問題。

最後,別忘了在jsp中聲明:
contentType="text/html;charset=gb2312"

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.