日期:2014-05-18  浏览次数:20659 次

Servlet 中Get 请求的中文乱码
是个老问题了,不过当QueryString中参数值存在中文.
我用String name=java.net.URLEncoder.encode("小王","GBK");
String url="helloservlet?name="+name;
然后用了
request.getRequestDispatcher(url).forward(request,response);
在helloservlet中进行了必要的中文转换处理,此时得到了正确的结果,没有任何乱码问题.
如果从浏览器直接访问该URL,就出现了乱码问题.
网上查了一些资料,提到的方法都用到了,request.setCharacterEncoding("GBK");
在Tomcat的server.xml中添加URIEncoding="GBK"都试过了,都没有用
不知道该怎么办了?
请各位高手帮忙啊!!!

------解决方案--------------------
在 servlet文件中 
  PrintWriter out = response.getWriter();
  之前加上
  response.setContentType("text/html;charset=UTF-8");
就OK了!
------解决方案--------------------
中文编码一直是java中的一个比较痛苦的问题,我也曾遇到过这些问题

比较彻底的方法是:所有的页面代码,资源全部使用utf-8编码,这样就可以避免。

如果你执意要使用gbk或者gb2312来编码的话,每次接受参数应该对参数重新编码,如下:

String param=request.getParameter("name");
param=new String(param.getBytes(),"gb2312");
------解决方案--------------------
我用的几个方法:
1.加过滤器(确保页面之间的编码统一)
2.自己在程序里转str = new String(str.getBytes("ISO8859_1"),"GBK");
------解决方案--------------------
你是在服务器端处理的中文转码,用forward()是没有问题的
你在浏览器发送必有问题是正常的,
建意加个过滤器