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

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

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

3.将 中的 encoding="UTF-8" 改成 encoding="UTF8" (无语)

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

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

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


                org.apache.maven.plugins
                maven-war-plugin
                ${maven.war.plugin.version}
                
                    
                        false
                    
                    ${project.artifactId}
                    
                        
                            src/main/resources/${package.environment}
                            WEB-INF/classes
                            true
                        
                    
                
            

问题就出在这个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节点设置成utf-8。我看了一下我的plugin版本是2.1.1,我终于明白,为什么设置了也不生效了......

你可能感兴趣的:(3 字节的 UTF-8 序列的字节 3 无效)