代码之家  ›  专栏  ›  技术社区  ›  TofuBeer

用法文千分离机的蚂蚁军失败

  •  0
  • TofuBeer  · 技术社区  · 15 年前

    使用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));
    

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

    x doit__¬tre>=10 et<100,__ tait la 瑞士:1_000

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

    我使用的是Ant1.8.1,它与NetBeans的版本相同。它发生在OS X(10.6.5)和Windows7上。我还需要检查Ubuntu 10.10。

    你知道为什么它在NetBeans中工作,而不是在Ant的命令行中工作吗?

    2 回复  |  直到 15 年前
        1
  •  2
  •   axtavt    15 年前

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

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

        2
  •  1
  •   greuze    15 年前

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

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

    如果这也不起作用,您可以尝试编写一个方法,在另一条消息中转换您的消息,而不使用特殊字符。

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

    推荐文章