WEB开发之中文乱码问题

在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的配置文件中有设置传输数据所用的编码,也可以使用此方法来解决中文乱码的问题。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

猜你喜欢

转载自logking2340.iteye.com/blog/2164652
今日推荐