1

我的第一个问题。请多多包涵!

我有一个 Ant 任务,需要在继续之前从用户那里获得一些输入。我使用输入任务来实现这一点。输入消息将包含瑞典语字符(例如 å、ä 和 ö),但我无法让 Ant 正确输出消息。我正在使用运行 Windows 7 Pro English 的机器上的命令行进行测试(但显然使用的是瑞典语键盘)。例子:

<input message="åäö"/>

将输出:

[input] Õõ÷

build.xml 以 UTF-8 格式保存。如果我在命令行上执行“chcp”,我会得到“活动代码页:850”。

执行echo时可以看到相同的结果:

<echo message="åäö"/>

将输出:

[echo] Õõ÷

但在回声任务的情况下,我能够做到:

<echo encoding="850" message=åäö">

获得预期的输出:

[echo] åäö

但是,输入任务没有编码属性,我非常希望根本不必定义编码,尤其是在每个任务级别上(因为我无法确定 Ant 脚本在哪台机器上将从)运行。

PS如果接收到的输入包含åäö,我会遇到其他问题,并且我将输入设置为稍后在过滤器复制任务中使用的属性,但我想这是另一个问题

4

1 回答 1

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

在您的情况下,我会尝试 force 850,因为看起来 JRE 默认为其他内容。

这个问题帮助我找到了属性名称。

从哪里ant运行也很重要。如果我从我的 ide、jedit控制台插件运行它,我不需要覆盖编码,因为我将它配置为在windows-1250. 所以这似乎是另一种解决方法,使用 IDE

于 2012-10-02T09:25:35.490 回答