У меня возникла странная проблема. В нижеприведенном фрагменте кода я ищу присутствие ß.Проблема с компиляцией Java с символом ß
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;
}
}
}
У меня есть веб-приложение, работающее на JBOSS в Linux, Java 6. Приведенный выше код не обнаруживает наличие ß при включении кода в указанной выше заявке. Удивительно, если я скомпилирую тот же файл в рабочей области eclipse, а затем применим патч в приложении, он работает так, как ожидалось!
Очки отметить:
- Сборки приложений среда не является черным ящиком для меня, поэтому не знает, если есть какая-либо -encoding опция присутствует для команды JAVAC или что-то вроде этого
- Мой Eclipse JRE - это java8, но версия для компилятора, установленная для проекта, - это Java6
Я изменил значение с ß на unicode, эквивалентное \ u00DF в объявлении массива, но все же поведение такое же.
char [] chArray = {'\ u00DF'};
Когда я декомпилировал созданный файл класса, объявленное значение символьного массива было отображено как 65533, то есть \ uFFFD, ничего, кроме символа замены, который используется для неопознанного символа. Я использовал JD-GUI как декомпилятор, который я не считаю заслуживающим доверия!
Нужна помощь людям! Я уверен, что это не так же, как: случай чувствительный вопрос бета Java's equalsIgnoreCase fails with ß ("Sharp S" used in German alphabet)
Заранее спасибо
Я подозреваю, что вы не сохранили исходный код как UTF-8 –