admin 发表于 2015-4-23 11:27

java项目ajax提交中文乱码的问题

java项目ajax提交中文乱码的问题


今天上午 做验证码的功能、碰巧是中文验证码、明明输入对了结果一直提示验证码错误、后台打印下 结果是乱码、检查了一下web.xml 也是配置了字符过滤器。


由于其他地方 也是用了ajax 但是提交中文时没有问题的、对比一下结果发现type 类型不一样、前者是post请求后者是get请求(乱码)。


百度了一下 get 和post请求的区别:
对于Post请求,只需在Servlet或者jsp中写入如下代码就可以把解决从表单中传入的中文乱码问题
request.setCharacterEncoding("utf-8");
而对于Get请求,因为请求参数会被附加到地址栏的URL之后,所以不能用上面的处理方法。应该这样:
   String str=request.getQueryString();
   //使用URLDecoder解码字符串
   String str1=java.net.URLDecoder.decode(str,"utf-8");
   String[] paraStrings=str1.split("&");
   //paraStrings就是第一个参数,依次类推...
   for(String paraString : paraStrings)
{
   String[] nameValue=paraString.split("=");
   //nameValue就是表单的name,nameValue就是表单name对应的值
}
还有一种方法就是获取请求参数之后对请求参数值重新编码,也就是先将其转换成字节数组,再将字节数组重新解码成字符串。
String str=request.getParameter("name");
byte[] bytes=str.getBytes("ISO-8859-1");
String name=new String(bytes,"utf-8");

所以get即使走过滤器 解码方式也是不一样的所以导致乱码 改为post请求就ok了。

记忆的梗上 发表于 2015-5-14 00:31

终于可以回复了
页: [1]
查看完整版本: java项目ajax提交中文乱码的问题