Сравнение китайских или японских символов - PullRequest
1 голос
/ 06 марта 2012

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 06 марта 2012

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

1 голос
/ 06 марта 2012

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...