1

私の最初の質問。我慢してください!

続行する前にユーザーから入力を取得する必要があるAntタスクがあります。これを実現するために入力タスクを使用します。入力メッセージにはスウェーデン語の文字(例:å、ä、ö)が含まれますが、Antにメッセージを正しく出力させることができません。私はこれをWindows7Pro Englishを実行しているマシンのコマンドラインを使用してテストしています(ただし、明らかにスウェーデン語のキーボードを使用しています)。例:

<input message="åäö"/>

出力します:

[input] Õõ÷

build.xmlはUTF-8形式で保存されます。コマンドラインで「chcp」を実行すると、「アクティブコードページ:850」が表示されます。

エコーを実行しても同じ結果が見られます:

<echo message="åäö"/>

出力します:

[echo] Õõ÷

しかし、エコータスクの場合、私は次のことができます。

<echo encoding="850" message=åäö">

期待される出力を取得するには:

[echo] åäö

ただし、入力タスクにはエンコーディング属性がないため、特にタスクごとのレベルではなく、エンコーディングをまったく定義する必要がないことを強く望んでいます(Antスクリプトがどのマシンにあるかわからないため)から実行されます)。

PS受信した入力にåäöが含まれていて、後でフィルターコピータスクで使用されるプロパティとして入力を設定した場合、追加の問題が発生しますが、それはまったく別の質問だと思います

4

1 に答える 1

1

ポーランド語のウィンドウで問題を確認できます。

<script language="javascript">
  java.lang.System.out.println("default charset: "
  + java.nio.charset.Charset.defaultCharset());
</script>

コンソールが「iso-8859-2」で動作している間、デフォルトの文字セットを「windows-1250」として報告します(そうだと思います)。

<input>タスクは、コンソール入力と一致すると考えてデフォルトの文字セットを使用しているようです。そうでない場合は、次のようにエンコーディングをオーバーライドすることができました

set ANT_OPTS=-Dfile.encoding=iso-8859-2
ant

850あなたの場合、JREがデフォルトで別のものになっているように見えるので、強制しようとします。

この質問は、私が物件名を見つけるのに役立ちました。

antどこから実行されるかも重要です。ide、jeditコンソールプラグインから実行する場合、で動作するように構成したため、エンコーディングをオーバーライドする必要はありませんwindows-1250。したがって、IDEを使用する別の回避策のようです。

于 2012-10-02T09:25:35.490 に答える