成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

MySQL手冊中查到的JSP中文亂碼解決方法

開發 后端
本文講述了MySQL以及JSP的中文亂碼問題。從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才能提交給服務器執行.這個過程也存在字符編碼問題.java編譯器(javac)使用操作系統的語言環境作為默認的字符編碼方式,JRE(Java Runtime Environment)也是這樣。只有當編譯和運行環境的字符編碼方式與存儲源文件的編碼方式相同時,中文字符才能正確地顯示。否則就需要在運行時進行轉碼,使它們使用兼容的編碼。這里的設置可以分為幾個層次:操作系統層支持的語言,這是最重要的,因為它會影響JVM的默認字符編碼方式,同時對字符的顯示,如字體等有直接影響;J2EE服務器層,大多數服務器都可以對字符編碼進行自定義的配置,例如Tomcat就可以通過web.xml中設置javaEncoding參數設置字符編碼,默認是UTF-8.

IE也可以設置成總是使用UTF-8編碼來發送請求.應用程序層,每個配置在服務器下的程序都可以設置自己的編碼方式,這個我目前還沒有用到,以后再學習。

運行時的轉碼,運行時期,應用程序很可能需要與外部系統進行交互,例如對數據庫進行讀寫,對外部文件進行讀寫.在這些情況下,應用程序免不了要和外部系統進行數據交換。那么對于中文字符, 數據出入口的編碼方式就顯得特別重要了(往往是導致JSP中文亂碼問題的主因)。一般外部系統都有自己的字符編碼方式,我的例子中配置的MySQL就是使用的UTF-8編碼。JSP頁面通過設定"charset=gb2312",

使用gb2312編碼,在它與數據庫交互的時候就需要進行顯式的轉碼才能正確處理中文字符。

【編輯推薦】

  1. JSP中文亂碼問題的描述及解決方法
  2. 實例說明JSP打印報表的方法
  3. 使用JSP打印報表(Word,Excel)
  4. 簡單介紹JSP技術
  5. JSP技術入門學習
責任編輯:yangsai 來源: 51CTO
相關推薦

2009-07-02 13:26:32

JSP中文亂碼

2012-03-21 10:16:31

JavaJSP

2009-07-01 18:14:36

JSP亂碼

2011-03-01 15:38:44

Fireftp亂碼

2010-10-13 17:22:12

MySQL查詢亂碼

2011-07-05 09:44:31

QT Mysql 亂碼

2010-05-14 17:27:40

MySQL中文亂碼

2009-09-07 18:40:28

PHP中文亂碼

2013-01-30 16:54:21

2009-07-01 18:05:54

JSP中文亂碼

2010-07-15 14:01:12

telnet亂碼

2009-02-18 14:28:23

編碼亂碼JSP

2010-06-07 14:50:50

jsp MySQL

2010-11-23 10:11:23

mysql建表亂碼

2009-06-25 15:06:20

Javadoc亂碼

2011-06-14 13:41:27

muleWSDL

2010-05-28 18:05:22

jsp MySQL

2009-02-26 11:13:41

Weblogic中間件JSP

2009-06-30 13:49:21

excel文檔Jsp

2010-05-24 18:22:36

jsp MySQL
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美精品一区二区三区在线 | 日本一区二区高清视频 | jvid精品资源在线观看 | av一二三区 | 天天干夜夜操 | 成人久久18免费网站麻豆 | 日日摸日日碰夜夜爽亚洲精品蜜乳 | 国产日韩欧美一区二区 | 三极网站 | 国产99视频精品免费播放照片 | 日韩欧美精品在线播放 | 99精品视频在线观看 | 国产欧美一级二级三级在线视频 | 亚洲色图图片 | 亚洲国产一区在线 | 欧美日高清视频 | 久久网亚洲 | 亚洲激情av | 成人免费看片网 | 国产精品久久久久久久久久妞妞 | 国产精品成人一区 | 国产一区二区三区四区五区加勒比 | 伊人狼人影院 | 欧美精品一区二区在线观看 | 91porn在线| 最新黄色毛片 | 亚洲免费视频网站 | 国产精品mv在线观看 | 久久久久久中文字幕 | 欧美成人影院在线 | h漫在线观看 | 日韩中文一区二区三区 | 中文视频在线 | 日韩一区在线播放 | 欧美v片| 岛国av在线免费观看 | 日韩一级| 国产精品综合久久 | 亚洲性视频网站 | 综合色导航 | 国产一区二区三区高清 |