美文网首页
3 字节的 UTF-8 序列的字节 3 无效

3 字节的 UTF-8 序列的字节 3 无效

作者: kingjang | 来源:发表于2016-10-28 16:26 被阅读341次

    运行“mvn jetty:run”时,出现“3 字节的 UTF-8 序列的字节 3 无效......”。这是运行“mvn clean install”后xml配置文件的中文注释乱码问题(在mac上没问题,但是在windows上就报乱码),好几个月都没有解决。网上大体的解决方案有几种:
    1.将pom文件中的配置节properties节点加入:
    <project.build.sourceEncoding>utf-8</project.build.sourceEncoding>

    2.将xml设置成utf-8,删除文件,新建后重新输入中文注释。

    3.将<?xml version="1.0" encoding="UTF-8"?> 中的 encoding="UTF-8" 改成 encoding="UTF8" (无语)

    以上3种方案,我测试了以后,发现全都无效。

    于是继续googlet寻找答案...

    终于发现了问题所在 ,我用的是maven-war-plugin :

    <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>${maven.war.plugin.version}</version>
                    <configuration>
                        <archive>
                            <addMavenDescriptor>false</addMavenDescriptor>
                        </archive>
                        <warName>${project.artifactId}</warName>
                        <webResources>
                            <resource>
                                <directory>src/main/resources/${package.environment}</directory>
                                <targetPath>WEB-INF/classes</targetPath>
                                <filtering>true</filtering>
                            </resource>
                        </webResources>
                    </configuration>
                </plugin>
    
    

    问题就出在这个plugin上,maven-war-plugin并没有encoding的设置节点,那么maven-war-plugin到底用什么编码执行呢?网上有人给出了答案:

    1.在plugin版本低于2.3的情况下,源代码中发现encoding是null,也就是取操作系统默认的编码,而win环境默认是GBK,所以会乱码了。。。而且win不像Linux可以随意更改系统默认编码!!!所以用这个插件打包,有中文就坑了。。。。。这就是在mac上没问题,但是在win中乱码的原因。。。。汗!!!
    解决方案:去掉xml配置文件中所有注释中的中文。

    2.在plugin版本在2.3及以上的情况下,plugin的文档中发现:**resourceEncoding **默认取值正好是这个属性: ${project.build.sourceEncoding},所以我们需要pom文件中的配置节properties节点设置成<project.build.sourceEncoding>utf-8</project.build.sourceEncoding>。我看了一下我的plugin版本是2.1.1,我终于明白,为什么设置了也不生效了......

    相关文章

      网友评论

          本文标题:3 字节的 UTF-8 序列的字节 3 无效

          本文链接:https://www.haomeiwen.com/subject/tzreuttx.html