這幾天一直被中文亂碼問題困擾,中文數據插入到My Sql中很正常,在Command clIEnt line中也能正常顯示,可從數據庫中讀到JSP頁面上時,就變成“火星文”了。
於是上網查詢,也看到好多方法:有的說把my.ini中default-character-set=latin1改為default-character-set=utf8,有的說在Eclipse中改默認編碼方式,有的說改<%@ page contentType="text/Html;charset=gb2312" %>;,還有的說改連接字符:Connection con = DriverManager.getConnection("jdbc:MySQL://localhost:3306/MyData?user=root&passWord=3211535&useUnicode=true&characterEncoding=GB2312"); 。
幾番修改,我也被幾個修改的地方和幾種編碼方式搞暈了,改來改去還是亂碼,只是有時改了某個地方的某種編碼方式後,變成了另一種亂碼。 昨晚一直搞到十一點多,還是不行,冷靜下來一想,應該從源頭抓起,於是上網查JSP從My Sql中以什麼編碼方式讀取數據,也有幾種說法,於是分別試了下。終於成功了,其中一句:<%=sqlRst.getString(1)%>改為<%=new String(sqlRst.getString(1).getBytes("iso8859-1"),"gb2312")%>。把編碼方式從iso8859-1轉換成gb2312成功顯示中文。