我正在用Java编写ANT任务。
在我的build.xml中,我指定了参数,这些参数应该从我的java类中读取。当我在这些参数中使用特殊字符(如德语变音符号(Ö,Ä,Ü))时会出现问题。在我的java任务中,它们显示为?-characters(在eclipse中使用System.out.print)。
我的所有文件都编码为UTF-8。我的build.xml有相应的声明:
<?xml version="1.0" encoding="UTF-8" ?>
有关编写任务的详细信息:我是根据http://ant.apache.org/manual/develop.html(尤其是第5点嵌套元素)执行的。 我在我的任务中嵌套了元素,如:
<parameter name="test" value="ÖÄÜtest"/>
和java方法:
public void addConfiguredParameter(Parameter prop) {
System.out.println(prop.getValue());
//prints ???test
}
读取参数值。
答案 0 :(得分:2)
这里有几个转码操作:
System.out
PrintStream从UTF-16字符串转码为平台编码
PrintStream
编码为UTF-8,您可能希望XML文件中包含以下编码值:
Grapheme UTF-8 encoded bytes
Ö c3 96
Ä c3 84
Ü c3 9c
答案 1 :(得分:0)
您是否尝试使用以下参数启动java?
-Dfile.encoding=UTF-8
答案 2 :(得分:0)
问题以某种方式消失得无影无踪,可能已经通过将所有内容切换到utf-8来修复,但也许日食没有那么快反应。无论如何,我无法重现错误。
剩下的问题是,当我从build.xml中引用build.properties文件(使用提到的字符)时 - 我的java任务仍然没有得到正确的字符。但我可以通过使用\ u和字母的十六进制表示来避免这种情况 - 虽然这不是很方便!