奇怪的Java扩展ascii错误
我试图用Java与包含扩展ASCII字符的两个字符串进行比较奇怪的Java扩展ascii错误,java,Java,我试图用Java与包含扩展ASCII字符的两个字符串进行比较 boolean result = "éasdfasdf".substring(0,1).equals("é"); 有人能解释为什么这个结果是假的吗?我认为这与字符编码有关,但我不知道到底是什么问题 更新:ideone.com确实成功运行了这两行,所以问题在我的邮箱中。我想我找到了更多的证据: System.out.println("éb".charAt(1) == 'b'); 也会失败。。。这可能是两种不同字符编码的问题吗?使用
boolean result = "éasdfasdf".substring(0,1).equals("é");
有人能解释为什么这个结果是假的吗?我认为这与字符编码有关,但我不知道到底是什么问题
更新:ideone.com确实成功运行了这两行,所以问题在我的邮箱中。我想我找到了更多的证据:
System.out.println("éb".charAt(1) == 'b');
也会失败。。。这可能是两种不同字符编码的问题吗?使用
boolean result = "éasdfasdf".substring(0,1).equals("é")
它将给出预期的结果 原因很简单-使用“==”可以通过引用而不是值来比较对象。所以
equals()
解决了这个问题在Java中搜索字符串比较代码>boolean result=“éasdfasdf”。代码点(0)==“é”代码>用于简单字符。@VincentTeuben-不。事实并非如此。它返回true
Yes,当然,equals()不会失败:)在您给出答案之前,请尝试一下,因为这里有可疑的地方。System.out.println(“éasdfasdf.”子串(0,1).equals(“é”);在我的Windows Box上失败别怀疑,我已经试过了。它在我的系统上运行正常,例如:事实上,ideone给我的是真的,我从ideone复制了确切的源代码,并在IntelliJ14、JDK 1.7.0_51、Windows中进行了尝试,这给了我一个错误的答案。