在部署项目时,ANT似乎正在破坏中文字符

时间:2012-11-28 18:34:23

标签: xml ant utf-8 character-encoding

我有一个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文件从供应商目录复制到 config 目录并替换 ORDER_NAME 标记。 但是,在部署项目并打开文件后,文本已损坏为:

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

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

1 个答案:

答案 0 :(得分: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="'电子客票'"/>

正如所料。