您的位置:首页 > Web前端 > JavaScript

Servlet 与 JSP 中文乱码问题小结_Jian

2010-10-26 00:13 363 查看
Forword:

对于 Jian 这样的菜鸟,在做javaEE项目时,中文乱码的问题实在是很头疼的说。
今天就将这处女博文献给你吧,中文哥。


Question_1: [jsp 内容显示中文乱码]
如果在没有与任何 Servlet 交互的 jsp 页面,单纯显示内容出现中文乱码,仔细观察页面头的编码设置,如:

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1" %>


将其中的编码属性值更改为 pageEncoding="gbk" 即可正常显示 (当然也可设置为 "utf-8" 或者 "gb2312")
建议编码方式最好保持一致性,比如 Jian 就决定一致使用 "gbk",因为字最少...


Question_2: [jsp 与 Servlet 间跳转出现中文乱码]
情况一: method="Post"
jsp 中form 表单的 ation="XxxServlet",method="Post"时,提交表单后往往发现中文的属性值在 Servlet 中获取后变乱码。
此时需要定位到 doPost() 方法,首先在方法内首行加上如下 code:

request.setCharacterEncoding("gbk");


意思是设置 request 的编码为 "gbk",一般与 jsp 页面一致
然后,再添加 code:

response.setCharacterEncoding("gbk");

response.setContentType("text/html;charset=gbk");


意思是设置 response 的编码为 "gbk",即 Servlet 回传 jsp 时的编码,上面两段用其一即可,保持一致是关键。

情况二: method="Get"
jsp 中form 表单的 ation="XxxServlet",method="Get"时,提交表单后往往发现中文的属性值在 Servlet 中获取后变乱码。
此时需定位的 tomcat 的安装目录 %TOMCAT%/conf/server.xml 文件
寻找如下代码片段:

<Connector port="8080" protocol="HTTP/1.1" 
  maxThreads="150"  
  connectionTimeout="20000" 
  redirectPort="8443"
  URIEncoding="gbk"/>


最后的 URIEncoding="gbk" 是 Jian 手工添加的,为的就是解决 Get 的中文乱码问题。


Conclusion:
简单的小结了一下 Servlet 与 JSP 比较常见的中文乱码问题,Jian 要多做技术总结,温故而知新...


Confusion:
考虑在 <a href="XxxServlet?flag=###">超链接</a> 中,### 换为中文貌似是有问题的,记得以前是遇到过,还没解决。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: