2010-03-09 108 views
2

用下面的代码:奇怪的现象:Java转义欧元符号

System.out.println("\"1. \u20ac\""); 
    System.out.println("\"2. Euro sign \u20ac\""); 
    System.out.println("\"3. Eurovalue +1,25\u20ac\""); 

我得到以下结果:

"1. €" 
    "2. Euro sign €" 
    "3. Eurovalue +1,25?€" 

为什么会出现一个问号 '?'在欧元(€)前的第3行?

有人能解释我做错了什么吗?我的环境是Windows 7的Eclipse 3.1与Jre版本1.6.0_18-ea-b05

+0

我没有得到问号。你如何执行该代码?在打印UTF-8时,我发现Eclipse中存在一个错误,偶尔会产生奇怪的结果(突然错误地使用前100次和后100次)。 – 2010-03-09 12:22:13

+0

它能在我的Linux机器上正常工作 - 您能描述一下您的确切环境吗? (OS,Java版本等) – 2010-03-09 12:23:09

+0

Eclipse 3.1?窝。 – 2010-03-09 12:30:57

回答

0

我已经执行了代码,我得到你想要的输出很好。 如下 “1€” “2.欧元符号€” “3. Eurovalue + 1,25€”

既然你得到奇怪的输出可能是在本地计算机区域设置的语言设置设置, 这可能会帮助你

+0

奇怪,如果它编码,因为它被转义。 它真的很奇怪,这取决于我先连接哪个部分,结果是不同的。如果我将第一个欧元符号和其他东西连接在一起,然后最后将它与更长的字符串结合在一起,它可以正常工作。 – Martin 2010-03-09 12:48:58

2

我想我解决了它。

在Eclipse中为java文件编码cp1252。它看起来与ISO-8859-1相同,但在运行时结果不同。通过配置文件编码到cp1252它再次工作。

真的很可怕:)