一、页面中文乱码

  二、浏览器显示乱码

  三、参数乱码

  四、乱码问题的本质

 

一、页面中文乱码

Eclipse或者MyEclipse中,默认的JSP编码格式为ISO-8859-1,所以当打开由其他编辑器编辑的JSP文件时会出现乱码。

解决方法:

1.更改一下Eclipse或者是MyEclipse中对JSP的默认编码为GB2312 UTF-8 GBK

2.单独更改改.jsp文件的编码(选中,右键,properties,resource,text file endoding)

二、浏览器显示乱码

原因:页面编码与浏览器解释所用编码不一致,导致浏览器显示出现乱码。

   当不指定页面显示编码时,页面的中文在浏览器中显示乱码。

 

解决方法:

1.在浏览器中设置能正确显示中文的编码(不推荐使用,因为这样在不同的浏览器中查看就需要多次设置)。

2.在页面的page命令中加上pageEncoding,并设置其值为GB2312 UTF-8 GBK

三、参数乱码

1.GET参数乱码

  修改Tomcat服务器的配置文件才能解决问题。修改Tomcatconf目录下的server.xml配置文件。

  在该段代码中添加URIEncoding="gb2312"或URIEncoding="utf-8"

  

2.POST参数乱码

  Tomcat中对于post方法提交的表单采用的默认编码为ISO-8859-1,而这种编码格式不支持中文字符

  采用转换编码格式的方法来解决。

  

  每个中文字段都进行转码比较麻烦,所以可以使用编码过滤器,此处不做详细介绍。

 

四、乱码问题的本质

  使用错误的字符集解码字节流或者将给定的字符串用错误的字符集编码成错误的字节流造成的。

  用不兼容的字符集去解码或编码造成乱码,比如 ISO-8859-1 不支持中文,在中文编码和解码任一过程中使用ISO-8859-1都会出现乱码。

  jsp源文件保存是基于字节流的,因此在保存的过程中会用字符集编码成字节流进行存储。在显示的过程中又会用字符集解码进行显示。如果这两个过程用的字符集不一致(不兼容),就会出现乱码。

  编译:java文件保存后,编译.java文件时,javac会使用系统当前的默认字符集去读取源文件,并将源文件的内容转换为UTF-8编码,然后再进行编译。也可以通过-encoding参数指定字符集,让javac使用我们指定的字符集去读取源文件然后再转成UTF-8进行编译。编译后生成的.class文件内部所有的中文字符都是用UTF-8的字符集进行编码的,这就是java程序能处理任何国家文字的原因。

 

  (该文供学习交流,欢迎大家共同探讨~)