Поддерживается ли char * на китайских / японских компьютерах? - PullRequest
0 голосов
/ 17 декабря 2008

Я пытаюсь создать DLL для аутентификации с использованием Java и JNI.

Чтобы создать DLL, я создал приложение Win32, для которого набор символов и информация библиотеки времени выполнения являются многобайтовой строкой и многопоточной (/ MT) соответственно.

Я протестировал DLL на WinXP с действительными и недействительными учетными данными пользователя. Оба работают нормально.

Мне нужно знать, будет ли эта же DLL работать и в китайской / японской среде.

Может кто-нибудь помочь мне с этим вопросом?

Заранее спасибо.

Привет

Jegan K S

Ответы [ 2 ]

1 голос
/ 08 января 2009

То, что пишет Мартин, верно:

Это должно работать нормально, если вы когда-либо обрабатывать строки как капли. Когда ты начнешь доступ к ним "char-by-char" (т.е. побайтово), все может пойти не так если вы предполагаете, что символ C является полным charater. Точно так же, если вы предполагаете, что вы может разбить строку в середине на две подстроки, это может пойти неправильно и т. д.

Но это хуже, чем это. Выполнение в японской или китайской системе просто увеличивает вероятность , что ваш код встретится с многобайтовым (не ASCII) текстом. Даже при работе в системе английского языка США (самый простой случай) вполне возможно, что ваш код встретится с многобайтовым (не ASCII) текстом. Не думайте, что строки, используемые в пользовательском интерфейсе по умолчанию, являются пределом того, с чем вы можете столкнуться.

Также обратите внимание, что преобразование вашего проекта в Unicode (как его называет Microsoft) не поможет, потому что Microsoft выбирает кодировку Unicode UTF-16, с которой возникают похожие проблемы (реже). (В UTF-16 термин, который нужно искать, это «суррогатная пара».)

Обработка текста затруднена. Пойдем по магазинам!

1 голос
/ 17 декабря 2008

Это должно работать нормально, если вы когда-либо рассматриваете строки как капли. Когда вы начинаете обращаться к ним "char-by-char" (то есть побайтно), все может пойти не так, если вы предполагаете, что символ C - это полный характер. Аналогично, если вы предполагаете, что можете разбить строку в середине на две подстроки, она может пойти не так и т. Д.

Кроме того, вопрос заключается в том, как преобразовать строку Java в такую ​​многобайтовую строку; Есть правильные и неправильные способы сделать это.

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