我就一个java project项目,有时候把外面的java文件copy进来的时候会出现页面乱码问题的出现。我在window—》preferences—》General—》contentType—》Text—》Java source File下面的default encoding:设置成utf-8,或者是GBK,GBK2312都没有反应。还有一个方法是直接右键单击java文件单击properties—》Text file encoding 下面的other设置成utf-8或者是GBK,GBK2312页面还是有中文乱码的问题,请问要解决中文乱码的问题该怎么解决的。
像我上面所说的,有时候行有时候不行。更多的时候是不行,有没有更好的解决方法的。

解决方案 »

  1.   

    JSP要经过两次的“编码”,第一阶段会用pageEncoding,第二阶段会用utf-8至utf-8,第三阶段就是由Tomcat出来的网页, 用的是contentType 第一阶段是jsp编译成.java,它会根据pageEncoding的设定读取jsp,结果是由指定的编码方案翻译成统一的UTF-8 JAVA源码(即.java),如果pageEncoding设定错了,或没有设定,出来的就是中文乱码。 第二阶段是由JAVAC的JAVA源码至java byteCode的编译,不论JSP编写时候用的是什么编码方案,经过这个阶段的结果全部是UTF-8的encoding的java源码。 JAVAC用UTF-8的encoding读取java源码,编译成UTF-8 encoding的二进制码(即.class),这是JVM对常数字串在二进制码(java encoding)内表达的规范。 第三阶段是Tomcat(或其的application container)载入和执行阶段二的来的JAVA二进制码,输出的结果,也就是在客户端见到的,这时隐藏在阶段一和阶段二的参数contentType就发挥了功效 contentType的設定. pageEncoding 和contentType的预设都是 ISO8859-1. 而随便设定了其中一个, 另一个就跟着一样了(TOMCAT4.1.27是如此). 但这不是绝对的, 这要看各自JSPC的处理方式. 而pageEncoding不等于contentType, <%@ page contentType="text/html;charset=utf-8" %> 记得老师上课讲的时候遇到了下面这种情况 他的处理办法是把utf-8改成了gbk, <%@ page contentType="text/html;charset=gbk" %> 貌似就是利用了随便改变其中一个另一个就跟着变的原理吧。实际上正规的该法应该是 <%@ page contentType="text/html;charset=utf-8" pageEncoding="GBK"%> 但是如果改成了这样,在服务器端收到的获取的中文不是乱码,但是在客户端打开的还是乱码,因为charset=utf-8" 中charset指定了,输出到客户端的是utf-8的编码,所以想正规的该法应该改成 <%@ page contentType="text/html;charset=gbk" pageEncoding="GBK"%> 貌似这样写,还不如 <%@ page contentType="text/html;charset=gbk" %> 简单呢, 看来以后自己还是用 这种简单的写法吧!    纯属个人自学的理解。如果错误还望指出以上是我以前在网上找到的资料希望对你有所帮助!
      

  2.   


    恩,还是有帮助的,我也把我的理解贴上去:
    要注意的:1页面文件编码,2:文件本身编码,3:框架提供的默认编码(通常在web.xml中配置),4开发工具编译器的编码,5:提交表单的方式,如为http request参数为中文,需要ISO-8859-1进行转码(转换为项目的编码)
    不过这些都解决不了我上面的问题,不过我现在已经解决了,给大家分享一下:
    解决的方法是:
    你用文本编缉器打开java文件,另存为自己选编码方式,完了再拷
    就解决了我刚才所说的问题了,不过还是感谢你了哦。如果大家还有什么心得的话,都可以讨论一下嘛。
      

  3.   

    另存的时候你选的编码是UTF-8吧。
      

  4.   

    你用Editplus打开你的文件,另存为选择UTF-8字符看看,之前我也出现过这样的问题,用这种方法解决过这种错误。
      

  5.   

    呵呵,不全是,有一些是直接copy过来的。所以导致了编码的不同而引起了乱码,所以上面也提到了另存改为自己的编号再copy就可以解决了乱码的问题。