[导入][AppFuse] AppFuse使用手记--资源文件中文问题(五) [原]

    AppFuse使用“mvn native2ascii:native2ascii”进行文件编码格式的转换。但是转换后,界面显示仍然是乱码。打开ApplicationResources_zh_CN.properties文件,里面是中文貌似已经转换为ascii。但是仔细看,ApplicationResources_zh_CN.properties文件仍然是GB18030。
 
    在网上找了找,如果在%PROJECT_HOME%运行:
    native2ascii -encoding UTF-8 .\src\main\resources\ApplicationResources_zh_CN.properties .\src\main\webapp\WEB-INF\classes\ApplicationResources_zh_CN.properties
    则显示正常。

    AppFuse的pom.xml里明明制定了UTF-8,为什么文件就变成了GB18030呢?
 1    <plugin>
 2        <groupId>org.codehaus.mojo</groupId>
 3        <artifactId>native2ascii-maven-plugin</artifactId>
 4        <version>1.0-alpha-1</version>
 5        <configuration>
 6            <dest>target/classes</dest>
 7            <src>src/main/resources</src>
 8        </configuration>
 9        <executions>
10            <execution>
11                <id>native2ascii-utf8</id>
12                <goals>
13                    <goal>native2ascii</goal>
14                </goals>
15                <configuration>
16                    <encoding>UTF8</encoding>
17                    <includes>
18                        ApplicationResources_ko.properties,
19                        ApplicationResources_no.properties,
20                        ApplicationResources_tr.properties,
21                        ApplicationResources_zh*.properties
22                    </includes>
23                </configuration>
24            </execution>
25            <execution>
26                <id>native2ascii-8859_1</id>
27                <goals>
28                    <goal>native2ascii</goal>
29                </goals>
30                <configuration>
31                    <encoding>8859_1</encoding>
32                    <includes>
33                        ApplicationResources_de.properties,
34                        ApplicationResources_fr.properties,
35                        ApplicationResources_nl.properties,
36                        ApplicationResources_pt*.properties
37                    </includes>
38                </configuration>
39            </execution>
40        </executions>
41    </plugin>

    查看JDK的native2ascii文档:
    -encoding encoding_name
    Specify the encoding name which is used by the conversion procedure. The default encoding is taken from System property file.encoding. The encoding_name string must be taken from the first column of the table of supported encodings in the Supported Encodings document.

    原来执行native2ascii时,默认取系统的file.encoding做为编码格式。试着输出file.encoding,果然是GB18030。难道是AppFuse执行“native2ascii:native2ascii”时,没有制定编码?
   
    反编译repository\org\codehaus\mojo\native2ascii-maven-plugin\1.0-alpha-1\native2ascii-maven-plugin-1.0-alpha-1.jar!\org\codehaus\mojo\native2ascii\Native2AsciiMojo.class
 1    protected void executeAnt()
 2    {
 3        Project antProject = new Project();
 4        antProject.setName("native2ascii");
 5        Native2Ascii antTask = new Native2Ascii();
 6        antTask.setProject(antProject);
 7        antTask.setSrc(src);
 8        antTask.setDest(dest);
 9        antTask.setEncoding(encoding);
10        antTask.setExt(ext);
11        antTask.setExcludes(excludes);
12        antTask.setIncludes(includes);
13        antTask.execute();
14    }
    代码也很简单,调用Ant的API实现转换。估计Ant也不会出现什么问题,为什么会使用系统默认的编码呢?试着输出encoding,发现encoding居然为null!会不会是从pom.xml里没有取到encoding的设置呢?
   
    修改pom.xml,尝试增加encoding节点
1    <groupId>org.codehaus.mojo</groupId>
2    <artifactId>native2ascii-maven-plugin</artifactId>
3    <version>1.0-alpha-1</version>
4    <configuration>
5        <dest>target/classes</dest>
6        <src>src/main/resources</src>
7        <encoding>UTF-8</encoding>
8    </configuration>
    再运行“mvn native2ascii:native2ascii”,发现encoding有值了,但是生成的文件编码还是GB18030,不过运行服务,中文乱码没有了。看来和文件编码没有太大关系,应该是native2ascii转换时采用默认的GB18030编码转换导致的。
   
    另外pom.xml只配置了ApplicationResources_zh*.properties的字符转换,AppFuse还有displaytag_zh.properties也需要转换,我们可以把pom.xml里ApplicationResources_zh*.properties都换成*_zh*.properties就可以了。
 1    <configuration>
 2        <encoding>UTF8</encoding>
 3        <includes>
 4            ApplicationResources_ko.properties,
 5            ApplicationResources_no.properties,
 6            ApplicationResources_tr.properties,
 7            *_zh*.properties
 8        </includes>
 9    </configuration>
10
11    
12    
13    <resource>
14        <directory>src/main/resources</directory>
15        <excludes>
16            <exclude>ApplicationResources_de.properties</exclude>
17            <exclude>ApplicationResources_fr.properties</exclude>
18            <exclude>ApplicationResources_ko.properties</exclude>
19            <exclude>ApplicationResources_nl.properties</exclude>
20            <exclude>ApplicationResources_no.properties</exclude>
21            <exclude>ApplicationResources_pt*.properties</exclude>
22            <exclude>ApplicationResources_tr.properties</exclude>
23            <exclude>*_zh*.properties</exclude>
24            <exclude>applicationContext-resources.xml</exclude>
25            <exclude>struts.xml</exclude>
26        </excludes>
27        <filtering>true</filtering>
28    </resource>

文章来源: http://heyday.blogcn.com/diary,15137426.shtml

posted on 2008-05-04 20:57 不同樊响 阅读(632) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 

导航

<2008年5月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

统计

常用链接

留言簿(2)

随笔档案(23)

搜索

最新评论

阅读排行榜

评论排行榜