[導入][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 不同樊響 閱讀(641) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

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

          統計

          常用鏈接

          留言簿(2)

          隨筆檔案(23)

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 蚌埠市| 许昌市| 荣成市| 肇源县| 栾川县| 中西区| 广州市| 高邑县| 株洲县| 阿克陶县| 潍坊市| 万全县| 广宗县| 三门县| 上虞市| 富锦市| 承德县| 霍城县| 合水县| 乐山市| 乐安县| 南皮县| 论坛| 沅江市| 商城县| 彩票| 灵山县| 赤城县| 汕头市| 凤山市| 进贤县| 泸西县| 宁晋县| 天台县| 东兴市| 德令哈市| 闽侯县| 贵溪市| 德格县| 阿克苏市| 南皮县|