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>

然后在 .properties 文件中定义ORDER_NAME的值

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 文件从供应商目录复制到配置目录并替换ORDER_NAME令牌。但是,在部署项目并打开文件后,文本损坏为:

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

我在 Windows 7 64 位、Eclipse Juno 32 位和 ANT 1.7.1 上运行它(Ant 版本无法升级)。我见过类似的问题,但没有任何令人满意的答案(或任何似乎适用于这种特定情况的问题)。谢谢。

4

1 回答 1

0

我自己解决了这个问题,但其他人可能无法复制我的问题,因为我为了简化而将信息从原始问题中删除(为了清楚起见,我已经编辑了问题)。

问题是属性文件的文件类型,其中包含:

ORDER_NAME=电子客票

UTF-8并且它需要是ISO-8859-1,因为这是 ANT 所期望的,请参阅: Apache Ant Property

因此将文件转换为 ISO-8859-1 并重新定义 ORDER_NAME:

ORDER_NAME=\u7535\u5B50\u5BA2\u7968

结果在 XSL 文件中包含:

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

正如预期的那样。

于 2014-10-22T17:44:43.653 回答