是个老问题了,不过当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"都试过了,都没有用
不知道该怎么办了?
请各位高手帮忙啊!!!
我用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"都试过了,都没有用
不知道该怎么办了?
请各位高手帮忙啊!!!
PrintWriter out = response.getWriter();
之前加上
response.setContentType("text/html;charset=UTF-8");
就OK了!
param=new String(param.getBytes(),"gb2312");
并且为何我用request.getRequestDispatcher().forward()的方式就能解决这个问题
直接用浏览器发送此URL就出问题了呢?应该做何解释呢?看来也只能尝试所有页面和资源都采用UTF-8编码了,如果能避免在get中出现中文就避免吧.
只是觉得应该没有解决不了的问题,只是我还不知道罢了:(
1.加过滤器(确保页面之间的编码统一)
2.自己在程序里转str = new String(str.getBytes("ISO8859_1"),"GBK");
你在浏览器发送必有问题是正常的,
建意加个过滤器
name为地址栏name=中文,传过来的,运行可行,因为在地址栏输入默认是gbk,而get传参数是要先骗马为iso8859-1再传的,所以要先用iso-8859-1来解码,再用gbk编码为一个新字符串,ok!