Bet*_*tta 11 java non-ascii-characters
我遇到了一个奇怪的问题.在下面的代码中,我正在寻找ß的存在.
public static void main(String[] args) {
char [] chArray = {'ß'};
String str = "Testß";
for(int i=0; i<chArray.length; i++){
if(str.indexOf(chArray[i])>-1){
System.out.println("ß is present");
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个在Linux上运行JBOSS的Web应用程序,Java 6. 上面的代码在上面指定的应用程序中包含代码时没有检测到ß的存在. 令人惊讶的是,如果我在我的eclipse工作区中编译相同的文件,然后在应用程序中应用补丁,它将按预期运行!
注意事项:
我在数组声明中将值从ß更改为等效于\ u00DF的unicode,但行为仍然相同.
char [] chArray = {'\ u00DF'};
当我反编译生成的类文件时,字符数组声明的值显示为65533,即\ uFFFD,只有用于未识别符号的替换字符.我使用JD-GUI作为反编译器,我认为不值得信赖!
需要你的帮助人!我确信它与以下内容不同:beta Java的equalsIgnoreCase的区分大小写问题与ß(德语字母表中使用的"Sharp S")失败
提前致谢
感谢您的时间和回复!
\n\n实际的问题是类文件没有在构建中生成,因此更改没有反映出来。在 java 源文件中使用 \xc3\x9f 的 unicode 值 \\u00DF 应该可以正常工作。
\n