一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語(yǔ)言 - JAVA教程 - 解決javaWEB中前后臺(tái)中文亂碼問(wèn)題的3種方法

解決javaWEB中前后臺(tái)中文亂碼問(wèn)題的3種方法

2020-01-16 16:37YX_blog JAVA教程

這篇文章主要介紹了解決javaWEB中前后臺(tái)中文亂碼問(wèn)題的3種方法,中文問(wèn)題一直是很多人難以解決的問(wèn)題,對(duì)這方面感興趣的朋友可以參考一下

中文亂碼問(wèn)題真的是一個(gè)很棘手的問(wèn)題,特別是從前臺(tái)傳到后臺(tái)之后,都不知道問(wèn)題出在哪里了。現(xiàn)在分享解決javaWEB中前后臺(tái)中文亂碼問(wèn)題的3種方法。
方法一:
tomcat的自帶編碼是ISO-8859-1的格式,是不兼容中文的編碼的。所以我們從后臺(tái)接收的時(shí)候要注意。
采用相同的格式去接收(ISO-8859-1),然后用能解析的編碼(utf-8)去轉(zhuǎn)換。這樣我們就能得到能兼容中文的格式了。這樣處理之后發(fā)往前臺(tái)。注意:發(fā)往前臺(tái)的時(shí)候也需要設(shè)置一下
resp.setContentType("text/html;charset=utf-8");//設(shè)置頁(yè)面的字符編碼,解決界面顯示中文亂碼的問(wèn)題

?
1
2
3
protected void service(HttpServletRequest req, HttpServletResponse resp)
   throws ServletException, IOException {
  //因?yàn)閠omcat自帶編碼是ISO-8859-1格式
?
1
2
3
4
5
6
//解決亂碼方法之一
<span style="white-space:pre">  </span>String name=req.getParameter("username");
<span style="white-space:pre">  </span>String pwd=req.getParameter("pwd");
<span style="white-space:pre">  </span>byte[] b=name.getBytes("ISO-8859-1");//用tomcat的格式(iso-8859-1)方式去讀。
<span style="white-space:pre">  </span>String str=new String(b,"utf-8");//采用utf-8去接string
<span style="white-space:pre">  </span>resp.setContentType("text/html;charset=utf-8");//設(shè)置頁(yè)面的字符編碼<span style="white-space:pre"> </span>
?
1
2
3
4
5
6
<span style="white-space:pre">  </span>PrintWriter pw =resp.getWriter();
<span style="white-space:pre">  </span>String str1="<html><body><font size='5px' color='red'>username:"+name+"pwd:"+pwd+"</font></body></html>";
<span style="white-space:pre">  </span>pw.print(str1);
  PrintWriter pw =resp.getWriter();
  String str1="<html><body><font size='5px' color='red'>username:"+name+"pwd:"+pwd+"</font></body></html>";
  pw.print(str1);

方法二:
由于方法一比較繁瑣,采用用了簡(jiǎn)單的設(shè)置。只需要簡(jiǎn)單的一句就可以搞定
req.setCharacterEncoding("utf-8");//必須寫在第一位,因?yàn)椴捎眠@種方式去讀取數(shù)據(jù),否則數(shù)據(jù)會(huì)出錯(cuò)。 
這樣就不用像之前的那樣繁瑣的設(shè)置了

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
protected void service(HttpServletRequest req, HttpServletResponse resp)
   throws ServletException, IOException {
  //因?yàn)閠omcat自帶編碼是ISO-8859-1格式
  
 //解決亂碼二《法一比較繁瑣》
  req.setCharacterEncoding("utf-8");//必須寫在第一位,因?yàn)椴捎眠@種方式去讀取數(shù)據(jù),否
 
則數(shù)據(jù)會(huì)出錯(cuò)。
//設(shè)置這樣方式去讀。這樣中文就能夠讀取出來(lái)了,但是需要注意。表單的發(fā)送方式必須是<span style="color:#ff0000;"> method='post'</span>
  resp.setContentType("text/html;charset=utf-8");//設(shè)置傳過(guò)去的頁(yè)面顯示的編碼
  String name=req.getParameter("username");
  String pwd=req.getParameter("pwd");
  PrintWriter pw =resp.getWriter();
  String str1="<html><body><font size='5px' color='red'>username:"+name+"pwd:"+pwd+"</font></body></html>";
  pw.print(str1);

方法三:

這是在法二的基礎(chǔ)上修改的。雖然我們能修改編碼格式去讀,但是考慮到用戶肯定不會(huì)修改,所以我們需要采用比較通用的辦法,讓用戶修改配置文件。也就是web.xml文件
需要修改web.xml里面的內(nèi)容,就是說(shuō),字符編碼從xml接收過(guò)來(lái)。需要在xml文件中配置參數(shù)。
代碼如下:

?
1
2
3
4
5
6
7
8
<servlet>
 <servlet-name>Encodeing</servlet-name>
 <servlet-class>cn.hncu.com.encode.Encodeing</servlet-class>
 <init-param>
 <param-name>charset</param-name>
 <param-value>utf-8</param-value>//這里面的內(nèi)容可供用戶自己填寫(必須是編碼格式)
 </init-param>
 </servlet>

我們知道前臺(tái)和后臺(tái)進(jìn)行交換必須經(jīng)過(guò)web.xml配置
我們需要獲取web.xml的設(shè)置的參數(shù)

?
1
2
3
public void init(ServletConfig config) throws ServletException {
  charset=config.getInitParameter("charset");//獲得初始化參數(shù)。當(dāng)然charset需要設(shè)置為全局變量。后面的service函數(shù)需要設(shè)置req.setCharacterEncoding(charset);
 }
?
1
2
3
4
5
6
7
8
req.setCharacterEncoding(charset);
  resp.setContentType("text/html;charset=utf-8");
  String name=req.getParameter("username");
  String pwd=req.getParameter("pwd");
   
  PrintWriter pw =resp.getWriter();
  String str1="<html><body><font size='5px' color='red'>username:"+name+"pwd:"+pwd+"</font></body></html>";
  pw.print(str1);

解決的效果圖:

解決之前:

解決javaWEB中前后臺(tái)中文亂碼問(wèn)題的3種方法

解決之后:

解決javaWEB中前后臺(tái)中文亂碼問(wèn)題的3種方法

前臺(tái)代碼:

?
1
2
3
4
5
6
7
<body>
 <form action="login" method="post">//login在web.xml中配置,就能實(shí)現(xiàn)到后臺(tái)去讀取數(shù)據(jù)
 用戶名:<input type="text" name="username"/><br/>
 密碼:<input type="password" name="pwd"/><br/>
 <input type="submit" value="登錄"/>
 </form>
 </body>

以上就是為大家分享的解決javaWEB中前后臺(tái)中文亂碼問(wèn)題的3種方法,特別是從前臺(tái)傳到后臺(tái)之后產(chǎn)生的中文亂碼問(wèn)題,希望對(duì)大家的學(xué)習(xí)有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 幻女free性zoz0交 | 公交车强校花系列小说 | 九九国产在线观看 | 91麻豆精品国产91久久久 | 视频二区 素人 欧美 日韩 | 美国雪白人妖sarina | 精品亚洲一区二区三区在线播放 | 精品高潮呻吟99AV无码视频 | 午夜精品久久久久久久99 | 午夜性色一区二区三区不卡视频 | 99热这里只有精品久久免费 | a毛片久久免费观看 | 国内精品国语自产拍在线观看55 | 免费高清观看 | 国产福利资源 | 日韩在线视频免费观看 | 国产精品合集久久久久青苹果 | 欧美国产日本高清不卡 | 操久| 国内精品久久久久影院中国 | 99久久精品免费看国产一区 | 免费国产白棉袜踩踏区域 | chinese腹肌gay| 99精品国产美女福到在线不卡 | sss在线播放 | 精品亚洲欧美中文字幕在线看 | 5g影院天天爽 | 欧美高清在线 | 免费国产在线观看 | 久久国产36精品色熟妇 | 国产午夜精品久久理论片 | 日韩手机在线观看 | 精品国产日韩一区三区 | 插鸡网站 | 天天做天天爱天天爽综合区 | 欧美一级片免费看 | free哆拍拍免费永久视频 | 亚洲成a人片777777久久 | 女仆色永久免费网站 | 国产三级精品91三级在专区 | 91九色视频无限观看免费 |