企業空間 采購商城 存儲論壇
華為全閃存陣列 IBM云計算 Acronis 安克諾斯 安騰普 騰保數據
首頁 > 數據庫 > MS SQL Server > 正文

Jsp程序使用mysql出現中文亂碼的解決辦法

2015-03-01 23:55來源:中國存儲網
導讀:有關JSP中文亂碼問題有不少解決方法。首先實現了一個StringConvertbean(GBtoISO()和ISOtoGB()兩個方法),解決了與MySQL數據庫交互的時候的部分中文亂碼問題:在JSP程序中讀取MySQL的中文內容,用這兩個方法可以解決亂碼問題

有關JSP中文亂碼問題有不少解決方法。首先實現了一個StringConvert bean(GBtoISO()和ISOtoGB()兩個方法),解決了與MySQL數據庫交互的時候的部分中文亂碼問題:在JSP程序中讀取MySQL的 中文內容,用這兩個方法可以解決亂碼問題。
但是從JSP寫入到MySQL的中文內容都成了亂碼,并且再讀出來的時候也顯示為"??",在這里應該出現了編碼轉換過程中的字符信息丟失。郁悶的 是,我在命令行窗口中登陸到MySQL后,執行如"INSERT INTO customer VALUES('字符',...)"這樣的語句時,寫入到數據表中的中文內容又是顯示正常的!!!數據庫使用的字符集是utf8。
碰壁多次,終于發現一條解決問題的路徑:查看MySQL手冊的時候,看到一條這樣的語句:To allow multiple character sets to be sent from the client, the "UTF-8" encoding should be used, either by configuring "utf8" as the default server character set, or by configuring the JDBC driver to use "UTF-8" through the characterEncoding property.
此外,在查閱《MySQL權威指南》時,發現在查詢語句中可以使用這樣的語法將字符串轉換到一個給定的字符集:_charset str。
其中charset必須是服務器支持的某個字符集。在本例中,shopdb數據庫使用的默認字符集是utf8,于是開始測試:
先輸入INSERT INTOpublish Values('8',_gb2312 '高等教育出版社') 寫入后中文變成"??"
再試INSERT INTOpublish Values('8',_gbk '高等教育出版社') 結果同上
INSERT INTOpublish Values('8',_utf8 '高等教育出版社') 這下更干脆,什么都沒有!!
JSP中文亂碼問題仍然存在。沒辦法,用show character set;命令查看MySQL支持的字符集,心想我都試一遍總有一個能成功吧。瀏覽了一下,發現沒有幾個熟悉的字符集,就只剩下一個latin1(ISO- 8859-1)比較常見了,不會是它吧,一試之下果然便是。
INSERT INTOpublish Values('8',_latin1 '高等教育出版社') 輸入中文能夠正確顯示。
這下總算找到JSP中文亂碼問題的解決方法了,把Tomcat下配置的數據庫連接池的url改為"...characterEncoding=UTF-8",然后把寫入數據庫的中文內容用
String s2 = new String(s1.getBytes("gb2312"),"ISO-8859-1")進行轉碼,其中s1為中文字符串.然后再寫入到數據庫一切顯示正常。
為解決這個問題查看了n多資料,現作一個總結:由于字符集和字符編碼方式的不同,在OS以及程序之間傳遞數據(尤其是multiple character sets中的數據)時便會產生亂碼以及字符信息的丟失.解決這個問題的關鍵便是了解數據輸出端和接收端使用的字符集和字符編碼方式,如果這兩種編碼方式不 同,便需要在數據出口或入口處進行 轉碼。一般的說,在編寫代碼,編譯,以及運行期間都會字符數據的傳遞,因此需要特別小心。
在編寫代碼的時候,你可能會使用某種開發工具,例如我正在使用的Eclipse.或許在寫的時候一切正常,可是一旦保存后再次打開文檔,所有的中文 字符都變成了亂碼。這是因為在編寫的時候,這些字符數據都在內存的某個stream中,ok,這沒問題,可是保存的時候這個stream中的數據會被寫入 到硬盤,使用的就是你的開發工具默認的編碼方式,如果很不幸你的開發工具默認編碼方式是ISO-8859-1,中文字符信息就不能正確地存儲。 Eclipse中可以這樣查看并修改默認字符編碼方式:Project->Properties->info,這里有"default
encoding for text file"。如果設置為GBK,那么編寫代碼并保存這關就過了。
對于JSP程序而言,編寫完代碼后就交給Container,首先它們會被轉成.java文件,然后編譯成.class才能提交給服務器執行.這
...

繼續閱讀
關鍵詞 :
MySQL
中國存儲網聲明:此文觀點不代表本站立場,如有版權疑問請聯系我們。
相關閱讀
產品推薦
頭條閱讀
欄目熱點

Copyright @ 2006-2019 ChinaStor.COM 版權所有 京ICP備14047533號

中國存儲網

存儲第一站,存儲門戶,存儲在線交流平臺

广西11选五走势图彩经网