2

次のテキストを含む XSL ファイルがあります。

<xsl:variable name="orderName" select="'@ORDER_NAME@'"/>

XSL ファイルの先頭では、エンコーディングが UTF-8 に設定されています。

<?xml version="1.0" encoding="UTF-8"?>

また、Eclipse でファイルのプロパティを確認すると、テキスト ファイルのエンコーディングは次のように表示されます。 デフォルト (コンテンツ タイプから決定: UTF-8)

次に、ANT フィルター セット ファイルがあります。

<project name="filterset" basedir=".">
    <property name="conn" value="TEST"/>
    <filterset id="conn_props">
        <filter token="ORDER_NAME" value="${ORDER_NAME}"/>
    </filterset>
</project>

次に、 ORDER_NAMEの値が.properties ファイルで定義されます。

ORDER_NAME=电子客票

以下は、デプロイのために実行される ANT deploy.xml からの抜粋です。

<copy todir="${working.dir}/config" failonerror="false" overwrite="true" encoding="UTF-8">
    <fileset dir="${supplier.dir}">
        <include name="Supplier/**/*.xsl"/>
        <include name="Supplier/**/*.xml"/>
    </fileset>
    <filterset refid="conn_props"/>
</copy>

これにより、XSL ファイルがSupplierディレクトリからconfigディレクトリにコピーされ、 ORDER_NAMEトークンが置き換えられます。ただし、プロジェクトをデプロイしてファイルを開くと、テキストが次のように破損しています。

<xsl:variable name="orderName" select="'çµå­å®¢ç¥'"/>

これを Windows 7 64 ビット、ANT 1.7.1 を搭載した Eclipse Juno 32 ビットで実行しています (Ant バージョンはアップグレードできません)。同様の質問を見たことがありますが、満足のいく回答 (またはこの特定のシナリオに当てはまると思われるもの) はありません。ありがとう。

4

1 に答える 1

0

私はこれを自分で解決しましたが、単純化するために元の質問から情報を除外した結果、他の人が私の問題を複製できなかった可能性があります (明確にするために質問を編集しました)。

問題は、以下を含むプロパティ ファイルのファイル タイプでした。

ORDER_NAME=电子客票

UTF-8であり、 ISO-8859-1である必要があります。これは ANT が期待するものです。次を参照してください: Apache Ant プロパティ

ファイルを ISO-8859-1 に変換し、ORDER_NAME を再定義します。

ORDER_NAME=\u7535\u5B50\u5BA2\u7968

以下を含む XSL ファイルが生成されます。

<xsl:variable name="orderName" select="'电子客票'"/>

予想通り。

于 2014-10-22T17:44:43.653 に答える