首先要需要了解的是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来解析字符串,就没有乱码了!