2011-09-15 68 views
1

我正在嘗試使用native2ascii ant任務,但似乎沒有做任何事情。這是我的螞蟻任務:Native2Ascii任務不工作

<target name="-pre-init"> 
     <native2ascii src="src/com/bluecubs/xinco/messages" dest="src/com/bluecubs/xinco/messages/test" 
     includes="**/_*.properties"/> 
     <copy todir="src/com/bluecubs/xinco/messages"> 
      <fileset dir="src/com/bluecubs/xinco/messages/test"/> 
     </copy> 
     <delete dir="src/com/bluecubs/xinco/messages/test" /> 
</target> 

我做了複製部分,看看它是否是覆蓋問題,但文件出來完全一樣。

這是輸出運行任務時,我得到:

Converting 12 files from Z:\Netbeans\Xinco\2.01.xx\Xinco\src\com\bluecubs\xinco\messages to Z:\Netbeans\Xinco\2.01.xx\Xinco\src\com\bluecubs\xinco\messages\test 
Copying 12 files to Z:\Netbeans\Xinco\2.01.xx\Xinco\src\com\bluecubs\xinco\messages 
Deleting directory Z:\Netbeans\Xinco\2.01.xx\Xinco\src\com\bluecubs\xinco\messages\test 

編輯:

其他信息: 操作系統:Windows 7(但答案應該在任何OD工作) 文件編碼:西方(ISO-8859-1)通過article獲得。

Files location

任何想法?

+0

建議您添加一些細節:您希望看到哪些更改,您所在的環境(Windows?)以及屬性文件使用的編碼。 –

+0

添加了請求的詳細信息。除了使其工作之外,很難預測我想看到的更改。 – javydreamercsw

+0

鏈接到的那些文件看起來像已包含帶有轉義Unicode的ASCII - 因此Ant任務不需要更改它們。或者他們已經在您的系統上進行了轉換?例如,在.ES文件中,你有a)'general.version = Versi \ u00f3n'或b)'general.version =Versión'? –

回答

0

它結束了一個觀點問題。在原始編輯器中查看文件(即寫字板)顯示文件已被任務轉換。從NetBeans查看它們顯示它們相同。

2

native2ascii將原始字符(如áéí)轉換爲轉義的Unicode序列。這意味着á將是\u00e1,é\u00e9í\u00ed。運行後native2ascii您的文件將是更便攜的標準ASCII文件。

native2ascii不會觸及已經在轉義的unicode表單中的字符。你的屬性文件已經以轉義的unicode形式存在,所以它不會改變任何東西。例如_XincoMessages_cz.properties包含此行:

general.accessrights=opr\u00E1vnen\u00ED k pr\u00EDstupu 

它忽略Unicode。該nonescaped unicode的形式是這樣的:

general.accessrights=oprávnení k prístupu 

寫字板與Netbans:當您打開與寫字板屬性文件它打開它作爲一個簡單的文本文件,並顯示\u00e1\u00e1。它不會將其轉換回á。 Netbeans進行這種轉換,你會看到'á'字符。此外,當您保存文件時,它將其作爲\u00e1(!)寫回到磁盤。要查看原始文件,請使用例如Total或Double Commander,它不會進行任何轉換。 (請注意,Netbeans的做這種轉換隻是爲了性文件。)

如果你把例如一個á字符您_XincoMessages_cz.properties文件,如果你運行Ant任務,它會變成\u00e1。當然現在不要使用Netbeans進行編輯,一個簡單的記事本就可以做到。

在java中加載屬性文件會將轉義的unicode字符轉換爲真正的unicode字符。舉個例子:

final Reader inStream = new FileReader("..../_XincoMessages_cz.properties"); 
final Properties properties = new Properties(); 
properties.load(inStream); 
System.out.println(properties.getProperty("general.accessrights")); 

它打印:

oprávnení k prístupu 

的ASCII /忽略Unicode形式性質在文件通常是由Java應用程序處理好。最後,我認爲你的屬性文件在當前格式中是很好的。

+0

很好的答案,但問題是沒有問題開始。 – javydreamercsw