在web开发的过程中我想都应该遇到过中文乱码的问题,现做一下总结来归纳一下中文乱码的问题:
情况一:
表单提交
1.post提交:提交的数据中带有中文的时候就会有乱码;
产生乱码的原因:浏览器发送数据到web服务器,浏览器的编码为utf-8(默认),web服务器的编码是ios-8859-1,在这个工程中就会出现乱码,request有一个设置接受编码的方法setCharacterEncoding();默认的是iso-8859-1;
解决方法:request.setCharacterEncoding("utf-8");//gbk gb2312
2.get提交:
String u=new String(str.getBytes("iso-88591"),"utf-8");
更好的做法是创建一个工具包,在工具包中写工具类:
public class MyTools{
public static String getNewString(String str){
return new String(str.getBytes("iso-8859-1"),"utf-8");
}
}
情况二:
超链接
和get表单提交的处理方法相同
情况三:
.在服务器端是中文,在response的时候,也要考虑浏览器显示是否正确,一般我们
通过responsedContentType("text/html;charset=utf-8");
情况四:
jsp乱码的问题:
jsp引擎将jsp页面翻译成servlet源文件时也可能导致中文乱码问题
jsp引擎将jsp文件翻译成servlet源文件默认采用UTF-8,而开发人员可以采用各种字符
编码来编写jsp源文件,因此jsp引擎翻译jsp文件的时候需要进行字符编码转换;
如果jsp文件中没有说明,默认的是iso-8859-1
解决jsp引擎翻译jsp页面中中文乱码问题的方法:
1.通过page指令的contenttype属性说明
2.page指令的pageEncoding属性;
jsp要经过两次编码:
第一阶段是jsp编译成.java,它会根据pageEncoding的设定读取jsp,结构是由指定的编码方案翻译成统一的
UTF-8;
第二阶段是.java编译成.class 结果全部是UTF-8
第三阶段:Tomcat载入和执行,输出结果,也就是客户端见到的,这时隐藏在阶段一的contentType就发挥了作用
3.在部署描述符中说明一组JSP源文件的字符集编码
<jsp-config>
<jsp-property-group>
<url-pattern>/jsp/*</url-pattern>
<page-encoding>GB2312</page-encoding>
</jsp-property-group>
</jsp-config>
在tomcat的配置文件中有设置传输数据所用的编码,也可以使用此方法来解决中文乱码的问题。