接口参数中文乱码(MYSQL+STRUTS)
来源:互联网 发布:淘宝上围巾店铺 编辑:程序博客网 时间:2024/06/10 23:09
前几天做一个项目的时候,遇到了传过来的中文参数是乱码的问题:
http://localhost:8081/my_service/getInData?className=美女&pageNo=1&pageSize=3
在服务器端接受到的className=????。
显示百度、google之后,说是数据库编码的问题,于是查询数据库:
1、SHOW VARIABLES LIKE "%char%"
没有问题,如果这里有不是utf8的可以执行SET character_set_server = utf8修改。
2、继续查询 SHOW VARIABLES LIKE "%coll%"
也没有发现问题,继续往下。
3、查询表里面字段的编码格式 SHOW FULL COLUMNS FROM pics
也没有问题,数据库的可能性排除。
然后,想到用的是struts2,于是找到struts2的配置文件,在里面加入<constant name="struts.i18n.encoding" value="utf-8"></constant>,将编码设置成utf-8,再测试,还是不行。
最后,在后台代码中加入
this.response.setContentType("text/html;charset=utf-8");
this.response.setCharacterEncoding("utf-8");
this.request.setCharacterEncoding("utf-8");
在测试,还是不行。。。。郁闷了一中午。
下午,求救于qq群。
有一个人说加入 URLDecoder.decode(str,"utf-8");这个,意思是页面是用encodeURI进行转码的,是把汉字转换成
¥%#¥%¥%¥%¥%¥%¥%#¥%#¥% 类似与这个玩意的东西,后台在用URLDecoder.decode(str,"utf-8"); 转回来,测试,还是不行。
奔溃ing。。。。
最后,又有一个说是页面默认的编码是ISO-8859-1,而接口中没有设置编码格式,所以不行,需要在后台代码中加入如下代码
className = new String(className.getBytes("ISO-8859-1"), "utf-8");
将传过来的参数进行转码。
测试,成功!
PS:这种方法虽然可以解决问题,但是它每传过来一个参数,就要进行一次new String(),效率不高,所以,只能是在参数很少,而且是中文的情况下使用。
- 接口参数中文乱码(MYSQL+STRUTS)
- struts中文与参数乱码问题
- struts+ajax中文参数乱码解决问题
- struts+hibernate+MySql中文乱码解决方案
- Struts+Hibernate+MySql 中文乱码问题解决方案
- struts + hibernate + MySql 中文乱码 解决方案
- Struts+Hibernate+MySql中文乱码解决方案
- Struts+mysql解决显示中文乱码
- 接口参数有中文,乱码怎么办
- 解决ext+struts传递中文参数的乱码的问题
- struts项目中文乱码解决方案(java中文乱码解决方案)
- java Struts 学习心得(中文乱码)
- Struts中文乱码问题解决
- struts中文乱码问题解决
- struts中文乱码问题解决
- struts中文乱码
- struts中文乱码解决方案
- struts中文乱码问题解决
- typedef用法小结
- 批量打印网页
- Android学习笔记2 短息发送器
- 众元小额贷款是正规公司吗?知道的朋友加我Q【758935848】告诉我一下
- Android最佳实践之:StrictMode介绍
- 接口参数中文乱码(MYSQL+STRUTS)
- com.fasterxml.jackson使用笔记
- Eclipse快捷键大全
- 张浩:一个小鸟引发的血案——社会化分享的价值
- WebService笔记(一):本质
- oracle存储过程学习(二)-调用存储过程和返回结果集
- coursera 中计算概论的第七周 B-06作业(补充部分)
- ASP.NET MVC5 新特性:Attribute路由使用详解
- C++中引用和指针的区别