Я столкнулся с какой-то странной проблемой. В нижеприведенном фрагменте кода я ищу присутствие ß.
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 или что-то вроде этого
- My eclipse JRE - это java8, но версия для компилятора для проекта - это Java6
-
Я изменил значение от ß до уникода, эквивалентного \u00DF в объявлении массива, но все же поведение такое же.
char [] chArray = {'\ u00DF'};
-
Когда я декомпилировал созданный файл класса, объявленное значение символьного массива было отображено как 65533, что \uFFFD, ничего, кроме символа замены, который используется для неопознанного символа. Я использовал JD-GUI как декомпилятор, который я не считаю заслуживающим доверия!
Вам нужна помощь! Я уверен, что это не то же самое, что: вопрос с вопросом о бета-версии Java equalsIgnoreCase терпит неудачу с ß ( "Sharp S" используется в немецком алфавите)
Заранее спасибо