Java Ant JUnit故障与法国千分位符

Java Ant JUnit故障与法国千分位符,java,netbeans,ant,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)); assertEquals(“x doitêtre>=10 et=10 et

使用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));
assertEquals(“x doitêtre>=10 et<100,était la suivante:1000”,在(“x”,10,100,1000)之间的消息);
在命令行上,消息显示为:

多伊特├-tre>=10 et<100,├⌐泰特拉 suivante:1000

我对正在发生的事感到不知所措。我知道千位分隔符不是一个空格,而是一个0XA0,这没有问题,但Netbeans和命令行对此存在分歧这一事实才是真正的问题

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


你知道为什么它可以在Netbeans中工作,但不能在ant的命令行中工作吗?

我想你的问题在于编码。您可以尝试更改Java类的编码(从ISO到UTF或viceversa)

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

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


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

我想你的问题在于编码。您可以尝试更改Java类的编码(从ISO到UTF或viceversa)

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

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


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

注意输出中的不一致性:
看起来像UTF-8显示为CP437,而没有中断空间像Windows-1252显示为CP437


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

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


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

值得检查Ant使用的区域设置和编码设置是否与Netbeans使用的一致。不过,您的“between”方法做什么呢?值得检查一下Ant使用的语言环境和编码设置是否与Netbeans使用的语言环境和编码设置一致。您的'between'方法做什么呢?结果证明我并没有将junit或javac设置为utf-8编码。我花了一些时间来追踪这个问题(我更改了源代码的javac,但没有更改单元测试)。谢谢你给我指出了正确的方向。。。虽然我必须将编码传递给javac,但我从来没有这样做过。事实证明,我没有将junit或javac设置为utf-8编码。我花了一些时间来追踪这个问题(我更改了源代码的javac,但没有更改单元测试)。谢谢你给我指出了正确的方向。。。我从未想过我必须将编码传递给javac。