首先要需要了解的是web容器默认编码是iso-8859-1,一个汉字占用两个字节,而在utf-8中一个汉字占用三个字节
1:Post提交乱码问题
表单的Post方式提交表单。
对于这种方式的请求,request.setCharacterEncoding("UTF-8")
一般在web.xml设置过滤器可以避免乱码的出现!
另外,struts的表单提交默认是采用post方式提交的,记得页面编码和容器编码要保持一致!
2:Get 提交乱码问题
2.1:页面链接中包含中文参数:
e.g: user.do?userName=<%=userName%>
使用java.net.URLEncoder.encode("中文","UTF-8");
可以避免乱码
2.2:表单使用get方式提交
自tomcat6.0之后,对于get提交方式,默认采用的是server.xml文件中的URIEncoding的编码方式,而不会采用过滤器中设置的编码。
另外,站点的server.xml,在里面的Connector标签里面的useBodyEncodingForURI="true" 这句的话告诉tomcat用页面的编码去处理post,推荐使用!
下下之策:
在jsp头部分,任何request和response被使用前,加上
request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-
8");
来避免中文乱码的问题!
另附:java:字符编码转换过程.doc
*********************************************************************************
在解析xml字符串的时候,总是乱码:
DOMDocument document = (DOMDocument)reader.read(new StringReader(responseText));
//Document document = reader.read(new ByteArrayInputStream(responseText.getBytes()));
后来使用StringReader来解析字符串,就没有乱码了!
1:Post提交乱码问题
表单的Post方式提交表单。
对于这种方式的请求,request.setCharacterEncoding("UTF-8")
一般在web.xml设置过滤器可以避免乱码的出现!
另外,struts的表单提交默认是采用post方式提交的,记得页面编码和容器编码要保持一致!
2:Get 提交乱码问题
2.1:页面链接中包含中文参数:
e.g: user.do?userName=<%=userName%>
使用java.net.URLEncoder.encode("中文","UTF-8");
可以避免乱码
2.2:表单使用get方式提交
自tomcat6.0之后,对于get提交方式,默认采用的是server.xml文件中的URIEncoding的编码方式,而不会采用过滤器中设置的编码。
另外,站点的server.xml,在里面的Connector标签里面的useBodyEncodingForURI="true" 这句的话告诉tomcat用页面的编码去处理post,推荐使用!
下下之策:
在jsp头部分,任何request和response被使用前,加上
request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-
8");
来避免中文乱码的问题!
另附:java:字符编码转换过程.doc
*********************************************************************************
在解析xml字符串的时候,总是乱码:
DOMDocument document = (DOMDocument)reader.read(new StringReader(responseText));
//Document document = reader.read(new ByteArrayInputStream(responseText.getBytes()));
后来使用StringReader来解析字符串,就没有乱码了!
本文详细介绍了Web容器默认编码为iso-8859-1,一个汉字占用两个字节,而在utf-8中一个汉字占用三个字节的情况,并针对Post提交乱码和Get提交乱码提供了相应的解决方案。通过设置request.setCharacterEncoding(UTF-8),可以避免Post方式提交表单的乱码问题;对于Get方式提交,可以通过java.net.URLEncoder.encode(中文UTF-8)避免乱码。此外,文章还强调了页面编码和容器编码保持一致的重要性。
555

被折叠的 条评论
为什么被折叠?



