当前位置: 代码迷 >> Web前端 >> web 开发中遇到的乱码有关问题
  详细解决方案

web 开发中遇到的乱码有关问题

热度:72   发布时间:2012-09-22 21:54:54.0
web 开发中遇到的乱码问题
首先要需要了解的是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来解析字符串,就没有乱码了!
  相关解决方案