ant loadfile任务不适用于xml文件中给定的捷克字符

ant loadfile任务不适用于xml文件中给定的捷克字符,xml,utf-8,ant,Xml,Utf 8,Ant,我有以下info.xml文件,该文件使用捷克字符表示节点公司: <?xml version="1.0" encoding="utf-8"?> <Candidates> <name>Arvind Kumar</name> <company>ěčš</company> </Candidates> 阿文德库马尔 ěčš 我有以下build.xml文件来读取info.xml文件并显示xml文件的内容

我有以下info.xml文件,该文件使用捷克字符表示节点公司:

<?xml version="1.0" encoding="utf-8"?>
<Candidates>
    <name>Arvind Kumar</name>
    <company>ěčš</company>
</Candidates>

阿文德库马尔
ěčš
我有以下build.xml文件来读取info.xml文件并显示xml文件的内容:

<?xml version="1.0" encoding="utf-8"?>
<project name="Check" default="">
    <xmlproperty file="info.xml" collapseAttributes="true"/>
    <echo file="output.txt" append="false">${Candidates.company}</echo>
</project>

${Candidates.company}
在windows 7上运行ant后,我在output.txt中得到以下输出,其中显示了不正确的“company”值:

<?xml version="1.0" encoding="utf-8"?>
<Candidates>
    <name>Arvind Kumar</name>
    <company>??š</company>
</Candidates>

阿文德库马尔
??š
我尝试按照另一个build.xml使用带有编码的ant loadfile任务,但这也没有帮助:

<?xml version="1.0" encoding="utf-8"?>
<project name="Check" default="">
    <loadfile encoding="utf-8" srcFile="info.xml" property="encoded_file"/>
    <echo file="output.txt" append="false">${encoded_file}</echo>
</project>

${encoded_file}

请告诉我如何使用ant任务,它可以正确读取和显示xml文件中的捷克字符。

ant没有任何问题。字符的显示方式取决于用于查看信息的程序。e、 g.如果在Windows命令提示符下显示UTF-8字符,则无法正确显示,因为它不支持UTF-8。(可能会有更改设置,但默认情况下不会)。如果要将其放入文件中,则用于显示文件的查看器应支持UTF-8编码


如果您在支持UTF-8的控制台上执行相同的操作,例如,在Linux上运行Bash的kconsole(KDE的一部分),它确实支持UTF-8,那么它会正确显示文本。

我认为有两种可能性:输入中的字符编码错误,或者在查看输出时显示错误(如@Jignesh所建议)

要检查输入中的字符是否正确,请尝试使用XSLT2.0处理器(如Saxon)并运行XPath2.0表达式

string-to-codepoints(//city)

这将为您提供与城市名称中的字符对应的Unicode代码点的十进制值-例如,u应为252。如果错误,则输入XML的实际编码与声明的编码不匹配,因此字符被误读。如果正确,则Ant任务/转换可能正在工作好的,问题在下游,您需要更仔细地查看输出文件是如何处理/显示的。

加载时您使用的是编码,而读取时您没有使用编码。 更改以下行:

<echo file="output.txt" append="false">${encoded_file}</echo>
${encoded_file}
致:


<echo encoding=:UTF-8" file="output.txt" append="false">${encoded_file}
 </echo>. 
<?XML version="1.0" encoding="utf-8"?>
<project name="Check" default="">
 <xmlproperty file="test.xml" collapseAttributes="true"/>
 <echo encoding="utf-8" file="output.xml" 
        append="false">${Candidates.company}</echo>
</project>