我有一个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版本无法升级)。我见过类似的问题,但没有任何满意的答案(或任何似乎适用于这种特殊情况的问题)。 感谢。
答案 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="'电子客票'"/>
正如所料。