2012-03-06 3 views
1

У меня есть форма, в которой пользователь вводит символы китайского/японского, а затем сравниваю его с объявленным значением. Проблема даже в том случае, если входные и объявленные значения одинаковы, они не равны.Сравнение строк на китайском или японском языке

Жестко закодированная переменная, такая как variableA = "官话", не соответствует формату ввода текста. Когда он печатается, он отображает "官话".

Даже их длины не равны! new String("官话").length(); не равна
formInputtedCharacter.length();, где вход при печати является «官 话» (UTF-8 уже)

Как это могло быть?

ответ

3

Наиболее вероятная причина (если вы уверены, что данные формы обрабатываются правильно) заключается в том, что компилятор Java использует неправильную кодировку при обработке вашего литерала. Убедитесь, что он использует ту же кодировку, что и все, что вы используете для редактирования исходного кода.

1

Java Строки представлены с использованием UTF-16, который является 2 или 4 байт длиной отображения на символ в кодировке Unicode.

Кажется, что есть два разных символа Unicode для 官话 или проблема с кодировкой символов. Возможно, один китайский и один японский персонаж выглядят одинаково или похожими? Если есть два разных символа Unicode, для него будут два разных байтовых представления. Следовательно, они не похожи на Java.

Смежные вопросы