详解get请求和post请求参数中文乱码的解决办法
首先出现中文乱码的原因是tomcat默认的编码方式是"ISO-8859-1",这种编码方式以单个字节作为一个字符,而汉字是以两个字节表示一个字符的。
一,get请求参数中文乱码的解决办法
对于get请求解决中文乱码有两种途径一种是修改tomcat默认的编码方式为"UTF-8"
在tomcat的server.xml里把
<Connector connectionTimeout="50000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
修改为
<Connector connectionTimeout="50000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>
使用这种方式带来的问题是在你本机上这么做没有问题,你无论怎么去修改你tomcat上的配置都没问题,
但是测试环境和生产环境的服务器不是轻易说改就能改的,特别是有些公司的服务器是租赁的,那么在我们
不知道测试环境和生产环境服务器配置的时候就要使用以下的方法来解决get请求的中文乱码问题。
来自页面的一个get请求:
window.location.href = getContextPath()+"/manage/user/detail?name="+encodeURI(encodeURI("小明"));
服务器端:
String name = request.getParameter("name"); orgname = URLDecoder.decode(name,"UTF-8");
因为get请求的参数在请求行上,我们不能像解决post请求那样使用 request.setCharacterEncoding(“UTF-8”);这种方式是修改方法体的编码方式。
所以只能使用以上的方式分别对请求行的汉字进行编码和解码。其实解决get请求中文乱码问题最好的方式是避免使用中文,比如上面的name=“小明”,
如果name是一个恒定值的话,你可以在你的程序里这样写:
window.location.href = getContextPath()+"/manage/user/detail?name="+encodeURI(encodeURI("xiaoming")); public static final String NAME = "xiaoming";//定义一个常量 String name = request.getParameter("name"); if(name.equals(NAME)){ name = "小明" }
如果你必须传中文,而且name这个参数的值是动态的,不断变化的,建议你在数据库里面建立一张表,
让你的中文参数的值都有一个对应的id,在请求发送钱先查一下这张表。
二,post请求参数中文乱码的解决办法
对于post请求,请求中问乱码的两种解决办法,就喜闻乐见了。一般也不会有post请求参数中文乱码吧,认为任何一个java的web项目因该都配置了字符集过滤器吧。
但为了这文章的完整性和以后工作学习方便,我还是把这两种方法贴上来吧。
(1):
request.setCharacterEncoding("UTF-8");
(2):
<filter> <description>字符集过滤器</description> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <description>字符集编码</description> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
第四种办法:
来自页面的一个get请求:
window.location.href = getContextPath()+"/manage/user/detail?name=小明";
服务器端:
String lb=new String(request.getParameter("name").getBytes("8859_1"));
- 详解get请求和post请求参数中文乱码的解决办法
- post,get请求中文乱码解决办法
- java web项目get,post请求参数中文乱码解决
- java 接受和发送http,post,get请求,参数中文乱码解决。
- 关于get和post请求中文乱码的解决办法
- Spring MVC的请求参数含中文, GET正常POST乱码解决
- jquery .post .get中文参数乱码解决方法详解
- get请求和post请求参数中文乱码的解决
- post和get请求中文参数出现乱码现象解决方案
- Struts2中解决POST请求和GET请求中的中文乱码问题
- GET方法传递中文参数乱码解决办法
- get请求时候参数中含有“中文”字段出现乱码问题的原因和解决方法
- [JavaEE]Get请求URI中带的中文参数在服务端乱码问题的解决方法
- 如何解决POST、GET请求时中文乱码
- JSP中解决中文乱码问题 对于post有效 对于get请求方式无效。
- 解决servlet中文乱码问题及get、post请求方式的讲解
- get请求中文参数乱码的解决之道
- POST、GET请求中文参数乱码问题
- Android 发送get请求 URL中文参数显示问号的一种解决办法
- Get,Post请求中文乱码问题有效解决方法