我的第一个问题。请耐心等待我!
我有一个Ant任务需要在继续之前从用户那里获得一些输入。我使用Input task来实现这一目标。输入消息将包含瑞典字符(例如å,ä和ö),但我无法让Ant正确输出消息。我正在使用运行Windows 7 Pro English的计算机上的命令行测试它(但显然使用瑞典语键盘)。例如:
<input message="åäö"/>
将输出:
[input] Õõ÷
build.xml以UTF-8格式保存。如果我在命令行上执行'chcp',我会得到“Active code page:850”。
执行echo时可以看到相同的结果:
<echo message="åäö"/>
将输出:
[echo] Õõ÷
但是在我可以做的echo任务的情况下:
<echo encoding="850" message=åäö">
获得预期的输出:
[echo] åäö
然而,输入任务没有编码属性,我更喜欢根本不需要定义编码,特别是不能在每个任务级别上(因为我无法确定在哪台机器上) Ant脚本将从中运行。
PS我收到的输入有其他问题,如果它包含åäö并且我将输入设置为稍后在过滤器复制任务中使用的属性,但我想这是另一个问题
答案 0 :(得分:1)
我可以在波兰语Windows上观察到这个问题。
<script language="javascript">
java.lang.System.out.println("default charset: "
+ java.nio.charset.Charset.defaultCharset());
</script>
将默认字符集报告为“windows-1250”,而控制台则以“iso-8859-2”运行(我猜是这样)。
看起来<input>
任务使用默认字符集,认为它与控制台输入匹配。如果没有,我设法以这种方式覆盖编码:
set ANT_OPTS=-Dfile.encoding=iso-8859-2
ant
在你的情况下,我会尝试强制850
,因为看起来JRE默认为其他东西。
This question帮助我找到了属性名称。
从ant
运行起来也很重要。如果我从我的ide jedit控制台插件运行它,我不需要覆盖编码,因为我将其配置为在windows-1250
中运行。所以它似乎是另一个解决方法,使用IDE 。