濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > 分享JSP中文亂碼解決方法

分享JSP中文亂碼解決方法

熱門(mén)標(biāo)簽:高德地圖標(biāo)注樣式 商洛電銷(xiāo) 北票市地圖標(biāo)注 杭州ai語(yǔ)音電銷(xiāo)機(jī)器人功能 地圖標(biāo)注線(xiàn)上教程 四川保險(xiǎn)智能外呼系統(tǒng)商家 電銷(xiāo)機(jī)器人是有一些什么技術(shù) 杭州語(yǔ)音電銷(xiāo)機(jī)器人軟件 電銷(xiāo)機(jī)器人好賣(mài)么

一、JSP頁(yè)面中文亂碼

在JSP頁(yè)面中,中文顯示亂碼有兩種情況:一種是HTML中的中文亂碼,另一種是在JSP中動(dòng)態(tài)輸出的中文亂碼。

先看一個(gè)JSP程序:

%@ page language="java" import="java.util.*" %> 
html> 
  head> 
  title>中文顯示示例/title> 
 
  /head>  
  body> 
  這是一個(gè)中文顯示示例: 
  % 
    String str = "中文"; 
    out.print(str); 
  %> 
  /body> 
/html> 

上面這個(gè)JSP程序看起來(lái)好像是在頁(yè)面顯示幾句中文而且標(biāo)題也是中文。運(yùn)行后在瀏覽器中顯示如圖所示

原因在于沒(méi)有在JSP中指定頁(yè)面顯示的編碼,消除亂碼的解決方案很簡(jiǎn)單上面代碼中page命令修改成如下所示即可

%@ page language="java" import="java.util.*" contentType="text/html; charset=GB2312" %> 
html> 
  head> 
  title>中文顯示示例/title> 
 
  /head>  
  body> 
  這是一個(gè)中文顯示示例: 
  % 
    String str = "中文"; 
    out.print(str); 
  %> 
  /body> 
/html> 

再次運(yùn)行亂碼消失,原理就是向頁(yè)面指定編碼為GB2312,那么頁(yè)面就會(huì)按照此編碼來(lái)顯示,于是亂碼消失。

二、URL傳遞參數(shù)中文亂碼

一般情況下在使用get方法提交表單的時(shí)候傳遞的參數(shù)如果是中文的話(huà)很可能會(huì)出現(xiàn)亂碼。

下面是一個(gè)示例程序

%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312"%> 
html> 
  head>  
    title>URL傳遞參數(shù)中文處理示例/title> 
  /head> 
  % 
    String param = request.getParameter("param"); 
  %> 
  body> 
    a href="URLCharset.jsp?param='中文'">請(qǐng)點(diǎn)擊這個(gè)鏈接/a>br> 
    你提交的參數(shù)為:%=param%> 
  /body> 
/html> 

上面這個(gè)JSP程序的功能就是通過(guò)一個(gè)URL鏈接向自身傳遞一個(gè)參數(shù),這個(gè)參數(shù)是中文字符串,這個(gè)程序的運(yùn)行效果如下圖

對(duì)于URL傳遞中文參數(shù)亂碼這個(gè)問(wèn)題,其處理方法比較特殊,僅僅轉(zhuǎn)換這個(gè)中文字符串或者設(shè)置JSP頁(yè)面顯示編碼都是不能解決問(wèn)題的,需要修改Tomcat服務(wù)器的配置文件才能解決問(wèn)題。在這里修改Tomcat的conf目錄下的server.xml配置文件,具體改后的代碼如下

Connector port="8080" protocol="HTTP/1.1" URIEncoding="gb2312" 
        connectionTimeout="20000"  
        redirectPort="8443" /> 

在原來(lái)代碼中添加URI編碼設(shè)置URIEncoding=“gb2312”即可,重啟Tomcat服務(wù)器可以得到正確的頁(yè)面。其原理也和上面的情況類(lèi)似,就是向程序指明編碼類(lèi)型,然后顯示就正常了。

三、表單提交中文亂碼

對(duì)于表單的數(shù)據(jù)可以使用request.getParameter(“”)的方法獲取,但是當(dāng)表單中出現(xiàn)中文數(shù)據(jù)的時(shí)候就會(huì)出現(xiàn)亂碼。

示例代碼如下

%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312"%> 
html> 
  head>   
    title>Form中文處理示例/title> 
  /head>  
  body> 
    font size="2"> 
        下面是表單內(nèi)容: 
      form action="AcceptFormCharset.jsp" method="post"> 
        用戶(hù)名:input type="text" name="userName" size="10"/> 
        密 碼:input type="password" name="password" size="10"/> 
        input type="submit" value="提交"> 
      /form>  
    /font> 
  /body> 
/html> 

在上面的表單當(dāng)中想AcceptFormCharset這個(gè)頁(yè)面提價(jià)兩項(xiàng)數(shù)據(jù),下面是AcceptFormCharset.jsp的內(nèi)容:

%@ page language="java" import="java.util.*" 
  contentType="text/html;charset=gb2312"%> 
html> 
  head> 
    title>Form中文亂碼/title> 
  /head> 
  body> 
    font size="2"> 下面是表單提交以后用request取到的表單數(shù)據(jù):br> 
      % 
        String userName = request.getParameter("userName"); 
        String password = request.getParameter("password"); 
        out.println("表單輸入userName的值:" + userName + "br>"); 
        out.println("表單輸入password的值:" + password + "br>"); 
       %>  
    /font> 
  /body> 
/html>

在上面的程序中,如果表單輸入沒(méi)有中文,則可以正常的顯示當(dāng)輸入的數(shù)據(jù)中有中文的時(shí)候,得到的結(jié)果如圖所示。

產(chǎn)生種結(jié)果的原因是Tomcat中對(duì)于post方法提交的表單采用的默認(rèn)編碼為ISO-8859-1,而這種編碼格式不支持中文字符。對(duì)于這個(gè)問(wèn)題可以采用轉(zhuǎn)換編碼格式的方法來(lái)解決,現(xiàn)在對(duì)AcceptFromCharset這個(gè)頁(yè)面改動(dòng)如下:

%@ page language="java" import="java.util.*" 
  contentType="text/html;charset=gb2312"%> 
html> 
  head> 
    title>Form中文亂碼/title> 
  /head> 
  body> 
    font size="2"> 下面是表單提交以后用request取到的表單數(shù)據(jù):br> 
      % 
        String userName = request.getParameter("userName"); 
        String password = request.getParameter("password"); 
        out.println("表單輸入userName的值:" + new String(userName.getBytes("ISO-8859-1"), "gb2312")+ "br>"); 
        out.println("表單輸入password的值:" + new String(password.getBytes("ISO-8859-1"), "gb2312")+ "br>"); 
       %>  
    /font> 
  /body> 
/html> 

經(jīng)過(guò)這樣的轉(zhuǎn)換編碼以后,所有的中文輸入都可以用request對(duì)象正常取出。在上面這個(gè)程序中,第四行和第五行是轉(zhuǎn)換編碼格式的關(guān)鍵,先從ISO-8859-1格式的字符串中取出字節(jié)內(nèi)容,然后在用GB2312的編碼格式重新構(gòu)造一個(gè)新的字符串。這樣就可以支持中文變淡輸入的正常取值和顯示。改進(jìn)以后程序運(yùn)行結(jié)果如下

經(jīng)過(guò)上面的更改編碼格式的處理,表單的中文輸入亂碼問(wèn)題已經(jīng)得到解決。但是如果上面的表單中的輸入項(xiàng)不止是兩個(gè),那么每個(gè)輸入項(xiàng)都需要進(jìn)行編碼轉(zhuǎn)換,那樣就很麻煩了。這是我們就用到了大名鼎鼎的過(guò)濾器filter了。關(guān)于這里的內(nèi)容大致的思慮和上面的一樣具體做法請(qǐng)參照筆者的另一篇文章。

四、Eclipse中JSP文件中文亂碼

在Eclipse或者M(jìn)yEclipse中由于默認(rèn)的JSP編碼格式為ISO-8859-1,所以當(dāng)打開(kāi)由其他編輯器編輯的JSP文件時(shí)會(huì)出現(xiàn)亂碼,如圖所示

對(duì)于這個(gè)問(wèn)題我們只需要更改一下Eclipse或者是MyEclipse中對(duì)JSP的默認(rèn)編碼就可以了,修改的地方(我的MyEclipse版本為11)如圖所示

PS

在Eclipse或者M(jìn)yEclipse當(dāng)中JSP文件默認(rèn)的編碼為ISO-8859-1,所以在JSP代碼中間如果出現(xiàn)中文就不能保存,例如如下代碼

%@ page language="java" import="java.util.*" %> 
html> 
  head> 
  title>中文顯示示例/title> 
 
  /head>  
  body> 
  這是一個(gè)中文顯示示例: 
  % 
    String str = "中文"; 
    out.print(str); 
  %> 
  /body> 
/html> 

修改后在保存的時(shí)候會(huì)提示如下:

現(xiàn)這個(gè)提示的原因在于JSP源文件中有ISO=8859-1編碼無(wú)法識(shí)別的中文字符,對(duì)于這個(gè)問(wèn)題,解決辦法就是在JSP頁(yè)面中聲明頁(yè)面編碼格式即可。聲明后代碼如下:

%@ page language="java" import="java.util.*" pageEncoding="GB2312" %> 
html> 
  head> 
  title>中文顯示示例/title> 
 
  /head>  
  body> 
  這是一個(gè)中文顯示示例: 
  % 
    String str = "中文"; 
    out.print(str); 
  %> 
  /body> 
/html>

其中第一行中pageEncoding=“gb2312”指明了JSP頁(yè)面編碼采用GB2312,這樣就可以正常保存JSP的源文件了。

以上就是本文所述的全部?jī)?nèi)容了,希望大家能夠喜歡。

請(qǐng)您花一點(diǎn)時(shí)間將文章分享給您的朋友或者留下評(píng)論。我們將會(huì)由衷感謝您的支持!

您可能感興趣的文章:
  • jsp用過(guò)濾器解決中文亂碼問(wèn)題的方法
  • JSP對(duì)URL鏈接中的中文亂碼處理方法總結(jié)
  • JSP利用過(guò)濾器解決request中文亂碼問(wèn)題
  • JSP頁(yè)面中超鏈接傳遞中文參數(shù)出現(xiàn)亂碼問(wèn)題解決方法
  • JSP中文亂碼常見(jiàn)3個(gè)例子及其解決方法
  • JSP頁(yè)面?zhèn)鲄⒊霈F(xiàn)中文亂碼的解決方案
  • jsp之間傳參數(shù)接受中文有亂碼問(wèn)題解決方法
  • jsp地址欄傳中文顯示亂碼解決方法分享
  • JSP出現(xiàn)中文亂碼問(wèn)題解決方法詳解

標(biāo)簽:云浮 江西 貴州 西藏 紅河 青島 丹東 宿州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《分享JSP中文亂碼解決方法》,本文關(guān)鍵詞  分享,JSP,中文,亂碼,解決,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《分享JSP中文亂碼解決方法》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于分享JSP中文亂碼解決方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    凯里市| 兰州市| 建宁县| 固原市| 长治市| 吉林市| 连城县| 梓潼县| 陕西省| 都兰县| 海城市| 上杭县| 文安县| 东丰县| 榆树市| 东平县| 阜南县| 新源县| 紫金县| 江源县| 越西县| 连山| 岱山县| 临沂市| 安阳县| 沙湾县| 金乡县| 三亚市| 岚皋县| 二连浩特市| 晋中市| 云梦县| 德安县| 满洲里市| 南丹县| 呼伦贝尔市| 乐昌市| 郎溪县| 公主岭市| 苗栗市| 营口市|