使用法语千位分隔符的Ant JUnit失败

时间:2010-11-12 01:57:03

标签: java netbeans ant

使用Netbeans 6.9.1我的单元测试没有问题。使用junit(4.8.2,它似乎与Netbeans使用的版本相同),测试在命令行上失败。

失败与这一行有关:

assertEquals("x doit être >= 10 et < 100, était la suivante: 1 000", messages_fr.between("x", 10, 100, 1000));

在命令行上,消息显示为:

  

xdoit├-tre&gt; = 10 et&lt; 100,├⌐taitla   suivante:1á000

我对正在发生的事情感到茫然。我知道千位分隔符不是空格而是0XA0,没有问题,但Netbeans和命令行对此有不同意见这是一个真正的问题。

我正在使用ant 1.8.1,它也是与Netbeans相同的版本。它发生在OS X(10.6.5)和Windows 7上。我仍然需要检查Ubuntu 10.10。

为什么它在Netbeans中运行但在ant中没有命令行?

2 个答案:

答案 0 :(得分:2)

请注意输出中的不一致:êé看起来像UTF-8显示为CP437,而不间断空格看起来像Windows-1252显示为CP437。

让我们撇开控制台编码(CP437)与系统编码(Windows-1252)不匹配的事实。然后我假设正确表示了无中断空间,因为它来自运行时库。这意味着表示消息的UTF-8是一个错误。也许您的消息模板存储在UTF-8中,但加载为Windows-1252。如果此模板存储在代码中,则需要将编译器编码设置为UTF-8。

答案 1 :(得分:1)

我认为你的问题是编码。您可以尝试更改Java类的编码(从ISO到UTF或反之亦然)。

如果这不起作用,您可以尝试配置Ant以使用与Netbeans相同的编码。

如果这也不起作用,您可以尝试编写一种方法,将您的邮件转换为另一条没有特殊字符的邮件。

在西班牙,我们遇到了同样的问题,很多时候我们写的每一个字符串都没有特殊的字符(不是最好的解决方案,但它有效)。