Appfuse中文乱码解决
最近我一直在用appfuse,用的是2.1.0-M2版本,在使用过程中,我发现了几个小问题,其中最为头痛的是中文显示乱码的问题。下面我就来说说我的解决方法。(当然,在这之前已经google了很多篇相关的文章,这里就不一一列举了)
首先来看看创建项目:
mvn archetype:generate -B -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-basic-struts-archetype -DarchetypeVersion=2.1.0-M2 -DgroupId=com.mycompany -DartifactId=myproject
这里注意,创建的项目目录有点问题,就是src\main\java\yourpackage\webapp\webapp,这里在webapp目录下仍然有一个webapp,这是错误的,需要把这个webapp\webapp修改为webapp即可。同样在test目录下也是这样。
修改完数据库选项之后,运行:
mvn jetty:run-war
编译、打包、测试、部署一通之后,一切ok,在浏览器上打http://localhost:8080,一切正常。
可是在Administration页面看到了乱码:
根据http://wenson.javaeye.com/blog/138633这篇文章的解决方案,是因为pom.xml里对资源文件displaytag_zh_CN.properties没有进行正确的编码就直接copy使用了,我采用他的方法,用
mvn appfuse:full-source
采用full-source的方式,然后在pom.xml里进行修改
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>native2ascii-maven-plugin</artifactId> <version>1.0-alpha-1</version> <configuration> <dest>target/classes</dest> <src>src/main/resources</src> </configuration> <executions> <execution> <id>native2ascii-utf8</id> <goals> <goal>native2ascii</goal> </goals> <configuration> <encoding>UTF8</encoding> <includes>ApplicationResources_ko.properties, ApplicationResources_no.properties, ApplicationResources_tr.properties, *_zh*.properties</includes> </configuration> </execution> <execution> <id>native2ascii-8859_1</id> <goals> <goal>native2ascii</goal> </goals> <configuration> <encoding>8859_1</encoding> <includes>ApplicationResources_de.properties, ApplicationResources_fr.properties, ApplicationResources_nl.properties, ApplicationResources_pt*.properties</includes> </configuration> </execution> </executions> </plugin>
以及:
<resource> <directory>src/main/resources</directory> <excludes> <exclude>ApplicationResources_de.properties</exclude> <exclude>ApplicationResources_fr.properties</exclude> <exclude>ApplicationResources_ko.properties</exclude> <exclude>ApplicationResources_nl.properties</exclude> <exclude>ApplicationResources_no.properties</exclude> <exclude>ApplicationResources_pt*.properties</exclude> <exclude>ApplicationResources_tr.properties</exclude> <exclude>*_zh*.properties</exclude> <exclude>applicationContext-resources.xml</exclude> <exclude>struts.xml</exclude> </excludes> <filtering>true</filtering> </resource>
然后重新运行,结果还是没有解决。
在eclipse里手工打开displaytag_zh_CN.properties这个文件,发现是用ISO-8859-1来encoding的,换成UTF-8方式打开,发现全部是乱码。用UTF-8来保存,然后再运行,一切都正常了。