eclipse编译器编码与jsp java 等文件编码一些自己的理解

首先设置 eclipse 下 jsp java 文件的默认编码


window-preference 如下图1:

图片1

此时 所有 jsp java都会按照这个默认的编码进行编写。


错误排查:

1、如果一个jsp 在eclipse里面看到的就是乱码了,那么肯定是因为后面有人改了上面的eclipse里面jsp的默认编码、

查看该jsp属性 如下图2:

图片2


看到这个jsp的编码为gbk的 那么如果jsp出现乱码 那么以前jsp默认编码肯定不是gbk的编码,


2、如果客户端页面出现乱码,排查jsp生成的servlet临时文件时否正确输入 ,按照不同服务器tomcat jboss 等等响应的位置,

查看jsp-servlet是否正确如图3:

图片3


如果生成不正确 就要排查该文件的encoding,或者 web.xml内是否配置了全局的jsp encoding 的代码

例如:

<jsp-config>
        <jsp-property-group>
            <description>
                Special property group for JSP Configuration JSP
                example.
            </description>
            <display-name>JSPConfiguration</display-name>
            <url-pattern>*.jsp</url-pattern>
            <el-ignored>true</el-ignored>
            <page-encoding>GBK</page-encoding>
            <scripting-invalid>false</scripting-invalid>
            <include-prelude></include-prelude>
            <include-coda></include-coda>
        </jsp-property-group>
    </jsp-config>



3、测试修改 如果修改eclipse默认编码,源文件 变成了乱码

     如果修改文件属性,文件也变成了乱码


4、编码转换,在windows下 进行编码转换 他都是先把源文件复制出来到内存 这时候是从文件编码charsetA 先转换成

     unicode编码,然后再转换成新的编码charsetB.此操作不一定可逆。例如charsetA存在uncode没有的编码,例如  

    gbk -〉 unicode 0x80,0x80 unicode没有这个编码 那么就会使 /ufffff 也就是? 这时候再转换成charsetB 永远也

    会知道他原来内容到底是什么了。


5、文件属性与内置 pageencoding 不一样,这样是非常严重的,就会发生第2种情况,因为jvm在编译过程当中,他是根据

pageencoding来解析文件的例如 本来是gbk编码的文件 非要pageencoding写成utf-8 那么它就会先将文件转换成unicode

0x81,0x87 例如这个在中文gbk里面代表“高” 那么jvm会按照utf-8的标准来解析成为unicode

字符,可能就会使别的字符“ҵ”,也可能没有 “�”

所以在编译成servlet的时候就已经出错了。


6、为什么将文件乱码内容复制出来,在文本编辑器例如 ultraediter修改好了再复制回eclipse文件去就行了?

     因为将乱码复制出来到内存时候他已经是unicode编码了,到Ultralediter修改成某种正确的中文编码gbk gb2312 等等

     无所谓,然后再复制出来是正确内容的uncode编码,然后再复制回eclipse jsp文件转换成相应正确的字符,就是正确的

 

 

7、返回页面编码不正确,jsp charset设置的是GBK,但是setencodingfilter里面统筹设置

接受request全部变成utf-8 这样就会在action接受的时候数据都变成乱码了,因为ie会按照

服务器charset编码对提交数据进行编码,而服务器又将这些编码信息用setencodingfilter又

设置了一次,所以 如果charset与setencodingfilter编码不同,就会出现类似4那种情况了

发表评论

邮箱地址不会被公开。 必填项已用*标注

昵称 *