999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

jsp中文編碼亂碼的分析與解決

2011-08-29 05:39:44姚竟發(fā)唐小強
科技傳播 2011年24期
關(guān)鍵詞:頁面數(shù)據(jù)庫

姚竟發(fā),唐小強

保定電力職業(yè)技術(shù)學院,河北保定 071000

0 引言

JSP(Java Server Pages)是由Sun公司倡導、許多公司參與一起建立的一種動態(tài)網(wǎng)頁技術(shù)標準,jsp技術(shù)采用java作為開發(fā)腳本語言,java本身有著很好的跨平臺性,但是jsp在結(jié)合頁面技術(shù)后,最使人頭疼的一個問題就是不能很好的處理中文亂碼問題,在開發(fā)過程中帶來諸多不便,本文從剖析中文亂碼產(chǎn)生的各種原因入手,并給出相應(yīng)的解決方案。

1 中文亂碼的根源

1)中文的編碼很多,在不同的情況下可能有多種不同的二進制值;

2)在某些應(yīng)用中傳遞數(shù)據(jù)時,可能把中文轉(zhuǎn)換成其它形式;

3)在一個應(yīng)用系統(tǒng)中,編碼之間存在各種各樣的轉(zhuǎn)換;

4)在轉(zhuǎn)換過程中需要制定編碼方式;

5)在具體實踐過程中,可能忽略或忘記設(shè)置編碼;

6)不同的軟件環(huán)境其編碼設(shè)置方式不同也容易導致中文亂碼;

7)編碼工具的多樣性以及對編碼的模糊認識不清。

2 常見的jsp頁面中文亂碼

網(wǎng)上常出現(xiàn)的 JSP/Servlet encoding 問題一般都表現(xiàn)在 browser或應(yīng)用程序端,如:

瀏覽器中看到的 Jsp/Servlet 頁面中的漢字怎么都成了‘?’;瀏覽器中看到的 Servlet 頁面中的漢字怎么都成了亂碼;JAVA 應(yīng)用程序界面中的漢字怎么都成了方塊;Jsp/Servlet 頁面無法顯示GBK 漢字;Jsp/Servlet 不能接收 form 提交的漢字;JSP/Servlet 數(shù)據(jù)庫讀寫無法獲得正確的內(nèi)容。

3 中文亂碼產(chǎn)生原因分析

1)在jsp中如果指定了<%@ page contentType="text/html;charset=A" %>,那么在該jsp中所有用到的數(shù)據(jù),如果沒有指定編碼,那么這些數(shù)據(jù)的編碼方式為A。

從request得到的數(shù)據(jù)如果沒有指定request的編碼的話,默認編碼為iso-8859-1。

假設(shè)從別的地方得到的數(shù)據(jù)是使用原來初始的編碼的,比如從數(shù)據(jù)庫得到數(shù)據(jù),如果數(shù)據(jù)庫的編碼是B,那么該數(shù)據(jù)的編碼是B而不是A,也不是系統(tǒng)默認的,此時,如果要輸出的數(shù)據(jù)的編碼不是A,那么,很可能顯示亂碼,所以首先要將數(shù)據(jù)正確轉(zhuǎn)化為編碼A,然后再輸出;

2)在jsp中如果沒有指定<%@ page contentType="text/html;charset=A" %>,那么默認的A編碼為iso-8859-1;

3)Servlet中 如 果 執(zhí) 行 了 像 response.setContentType("text/html;charset=A"),說明將response的字符輸出流編碼設(shè)置為A,所有要輸出的數(shù)據(jù)的編碼要轉(zhuǎn)化為A,否則就會出現(xiàn)亂碼。Servlet中從request得到的數(shù)據(jù)的編碼和jsp中一樣的,但是在servlet java文件中構(gòu)造的數(shù)據(jù)是使用是系統(tǒng)默認的編碼(iso-8859-1);servlet中從外部得到的數(shù)據(jù)使用的是原來的編碼,比如從編碼為B的數(shù)據(jù)庫得到的數(shù)據(jù)是編碼為B,不是A,也不是系統(tǒng)默認的編碼。

4 中文亂碼解決方案

4.1 JSP頁面顯示為亂碼

<%@ page contentType="text/html; charset=gb2312"%>,就可以消除亂碼了。

4.2 Servlet接收Form/Request傳遞的參數(shù)時顯示為亂碼

方法1:在使用request獲取參數(shù)前,加上此語句:request.setCharacterEncoding("A"), 此處設(shè)置的編碼要和傳遞參數(shù)的頁面采用的編碼方式一致。

方法2:使用過濾器(filter),在doFilter方法中做如下處理:

}同時,在web.xml中配置該過濾器:

4.3 JSP接收Form/Request傳遞的參數(shù)時顯示為亂碼

servlet可以處理中文后,jsp頁面接收Form/Request傳遞的參數(shù)卻仍然顯示為亂碼。

如果你的表單內(nèi)容為

,也就是說沒有指定form的method屬性。而問題就發(fā)生在此,F(xiàn)orm的默認mothod屬性為get. 而get是通過在發(fā)送請求的url后面加?然后加參數(shù)和值來傳遞數(shù)據(jù)的的,編碼格式為ASCII.這就要求我們在傳遞的數(shù)據(jù)中有非ASCII字符或是超過了100個字符,那么你必須使用method="post",否則就會出現(xiàn)亂碼。所以解決方式為:第二種亂碼的解決方式+在發(fā)送頁面的Form中指定method為post。

4.4 數(shù)據(jù)庫中的中文出現(xiàn)亂碼

只要涉及中文的地方全部是亂碼,解決辦法:在數(shù)據(jù)庫的數(shù)據(jù)庫URL中加上useUnicode=true&characterEncoding=gb2312就OK了。

4.5 客戶端讀取數(shù)據(jù)庫中文亂碼

通過數(shù)據(jù)庫客戶端(比如 ODBC 或 JDBC)從數(shù)據(jù)庫服務(wù)器中讀取字符串時,客戶端需要從服務(wù)器獲知所使用的編碼。當數(shù)據(jù)庫服務(wù)器發(fā)送字節(jié)流給客戶端時,客戶端負責將字節(jié)流按照正確的編碼轉(zhuǎn)化成 UNICODE字符串。如果從數(shù)據(jù)庫讀取字符串時得到亂碼,而數(shù)據(jù)庫中存放的數(shù)據(jù)又是正確的。解決的辦法還是通過string = newString(string.getBytes("iso-8859-1"), "GB2312") 的方法,重新得到原始的字節(jié)串,再重新使用正確的編碼轉(zhuǎn)化成字符串。

4.6 頁面在編輯工具中打開時中文亂碼

在編輯工具中打開一個已經(jīng)存在的項目,頁面開始的編碼如果是gb2312,而打開該頁面的工具默認的編碼如果是iso8859-1(例如myeclipse和dreamweaver),這時可能產(chǎn)生亂碼,直接修改編輯工具的編碼方式與原來頁面編碼一致即可。

5 結(jié)論

上面提到的方法應(yīng)該能解決大部分亂碼問題,如果在其他地方還出現(xiàn)亂碼,可能需要手動修改代碼。解決Java亂碼問題的關(guān)鍵在于在字節(jié)與字符的轉(zhuǎn)換過程中,你必須知道原來字節(jié)或轉(zhuǎn)換后的字節(jié)的編碼方式,轉(zhuǎn)換時采用的編碼必須與這個編碼方式保持一致。

[1]劉政.JSP數(shù)據(jù)庫Tomcat產(chǎn)生亂碼解決方案總結(jié)及原因(轉(zhuǎn)一).新浪博客,1994.

[2]孫鑫.servlet/jsp深入詳解.電子工業(yè)出版社,2008.

猜你喜歡
頁面數(shù)據(jù)庫
微信群聊總是找不到,打開這個開關(guān)就好了
大狗熊在睡覺
刷新生活的頁面
數(shù)據(jù)庫
財經(jīng)(2017年15期)2017-07-03 22:40:49
數(shù)據(jù)庫
財經(jīng)(2017年2期)2017-03-10 14:35:35
數(shù)據(jù)庫
財經(jīng)(2016年15期)2016-06-03 07:38:02
數(shù)據(jù)庫
財經(jīng)(2016年3期)2016-03-07 07:44:46
數(shù)據(jù)庫
財經(jīng)(2016年6期)2016-02-24 07:41:51
同一Word文檔 縱橫頁面并存
數(shù)據(jù)庫
財經(jīng)(2010年20期)2010-10-19 01:48:32
主站蜘蛛池模板: 思思热精品在线8| 亚亚洲乱码一二三四区| 91精品啪在线观看国产| 亚洲精品福利视频| 久久黄色毛片| 亚洲av无码牛牛影视在线二区| 丝袜美女被出水视频一区| 久久久久久国产精品mv| av一区二区三区高清久久| 国产h视频在线观看视频| 国产乱子伦精品视频| 国产91丝袜在线播放动漫 | 91国内外精品自在线播放| 四虎国产精品永久在线网址| 67194亚洲无码| 国产91av在线| 免费一级毛片在线播放傲雪网| 亚洲国产日韩在线观看| 亚洲欧洲日本在线| 男人天堂亚洲天堂| 综合社区亚洲熟妇p| 午夜一级做a爰片久久毛片| 国产福利2021最新在线观看| 精品伊人久久久香线蕉 | 高清精品美女在线播放| 国产成人麻豆精品| 精品综合久久久久久97| 久久www视频| 国产香蕉国产精品偷在线观看 | 久久精品中文字幕免费| 免费A∨中文乱码专区| 香蕉综合在线视频91| 亚洲精品手机在线| 久热这里只有精品6| 2022精品国偷自产免费观看| 久久性妇女精品免费| a级毛片毛片免费观看久潮| 国产一区二区三区视频| 国产精品视频3p| 97人人模人人爽人人喊小说| 亚洲AV人人澡人人双人| 2024av在线无码中文最新| 亚洲欧美日韩综合二区三区| 国产亚洲精品91| 亚洲激情区| 2021国产v亚洲v天堂无码| 亚洲国产欧美中日韩成人综合视频| 亚洲AV无码久久精品色欲| 国产91九色在线播放| 国产性生交xxxxx免费| 中文字幕首页系列人妻| 免费国产黄线在线观看| 区国产精品搜索视频| 国产99视频精品免费观看9e| 黄色三级网站免费| 色亚洲成人| 亚洲欧美日韩中文字幕在线| 九九九精品成人免费视频7| 97se亚洲综合不卡| 人人看人人鲁狠狠高清| 亚洲免费福利视频| 欧美日韩导航| 午夜福利无码一区二区| 91视频免费观看网站| 国产在线啪| 欧美激情伊人| 日韩国产黄色网站| 久久亚洲黄色视频| 久久一本精品久久久ー99| h网址在线观看| 亚洲黄色激情网站| 女人18一级毛片免费观看| 99热这里只有精品在线观看| 国产亚洲男人的天堂在线观看| 亚洲无码不卡网| 亚洲精品无码av中文字幕| aⅴ免费在线观看| 精品一区二区三区中文字幕| 亚洲日韩欧美在线观看| 国语少妇高潮| 亚洲综合第一区| 精品视频一区在线观看|