3

アラビア語に翻訳された .properties ファイルがあります。HTMLファイルの文字列を置き換えるために使用しています。ただし、コピー タスクを開始すると、シンボルが完全に破損し、次のような結果が得られます。

これを引き起こしている原因と、それを修正する方法はありますか?

build.xml

<target name="copyAndReplace">
   <copy todir="..." overwrite="yes" encoding="UTF-8">
      <fileset dir="..." includes="*.html"></fileset>
      <filterset>
         <filtersfile file="***.properties" />
      </filterset>
   </copy>
</target>
4

4 に答える 4

2

考えられる問題がいくつかあります。

  • Java では、プロパティファイルは ISO-8859-1 エンコーディングであると見なされます。Java を直接扱っていなくても、ant はプロパティ ファイルを読み取っています。Vim および NetBeans エディタでプロパティ ファイルを開くときに、この問題に遭遇しました。Vim はそれを UTF-8 で保存し、NetBeans は ISO-8859-1 で保存しました。

  • taskoutputencodingの属性を使用する必要があります。Windows では、UTF-8 はデフォルトのエンコーディングではありません。copy

于 2013-05-22T16:43:35.460 に答える
1

同じ問題が発生しましたが、画像がありました。 Ant のマニュアル
に次のような記述がありました。 注: コピー操作でフィルタを使用する場合は、コピーをテキスト ファイルに制限する必要があります。バイナリ ファイルは、コピー操作によって破損します。これは、フィルターがフィルター タスクによって暗黙的に定義されているか、フィルターセットとしてコピー操作に明示的に提供されているかに関係なく適用されます。エンコーディングに関する注意を参照してください。

多分それが問題の原因です。これで問題が解決するかどうかを自分で確認する必要があります。

よろしく、 マーク

于 2013-06-03T12:17:06.670 に答える
0

上記の@Jean Waghettiが述べたように、ANTはファイルがISO-8859-1でエンコードされていることを期待しています。漢字について同様のスタック オーバーフローの質問を投稿しました。

私が見つけた唯一の解決策は、.properties ファイルが ISO-8859-1 であり、文字がエスケープされていることを確認することです。

たとえば、 مرحبا بالعالم は次のようになります。

\u0645\u0631\u062D\u0628\u0627 \u0628\u0627\u0644\u0639\u0627\u0644\u0645

これは、人間が読める形式ではないため、理想的ではありません。Eclipse がホバー時に自動的に変換することに気付きました。

于 2014-10-22T17:59:47.137 に答える