JNI ОБНАРУЖИЛА ОШИБКУ В ПРИЛОЖЕНИИ: ввод недействителен. Модифицированный UTF-8: недопустимый стартовый байт 0x80.Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 JNI ОБНАРУЖИЛА ОШИБКУ В ПРИЛОЖЕНИИ: ввод недействителен. Модифицированный UTF-8: недопустимый стартовый байт 0x80.

Сообщение Anonymous »

Метод JNI NewStringUTF ожидает ввода в виде модифицированной строки UTF8. Разница между стандартной UTF-8 и модифицированной UTF-8 заключается в том, как он обрабатывает нулевой символ (U+0000). В стандарте UTF-8 нулевой символ кодируется как один байт (0x00). Однако в модифицированной UTF-8 нулевой символ кодируется двумя байтами (0xC0 0x80). Ссылка
но когда я пытаюсь передать строку, заканчивающуюся нулевым символом, закодированным с использованием двух байтов 0xC0 0x80. Я получаю сообщение об ошибке в методе NewStringUTF:
Изображение

Таким образом, кажется, что в конце добавляется дополнительный �, и метод не может распознать последние три символа.
Однако, когда я передаю стандарт Строка в кодировке UTF8, т. е. строка, заканчивающаяся нулевым символом в виде одного байта (0x00), для метода NewStringUTF она не выдает никаких ошибок. Я не могу понять причину такого поведения.
Более того, метод JNI GetStringUTFChars должен возвращать указатель на измененную строку UTF-8, но когда я печатаю каждый символ возвращаемой строки я снова получаю строку, заканчивающуюся нулевым символом, в виде одного байта (0x00), т. е. стандартной строки UTF8.
Может ли кто-нибудь объяснить, почему метод NewStringUTF не выдает исключение? любая ошибка, когда стандартная строка UTF8 передается в качестве входных данных, однако она выдает ошибку, когда я пытаюсь передать измененную строку в кодировке UTF8.
Кроме того, почему метод GetStringUTFChars возвращает стандартную строку UTF8 , когда в документации упоминается, что он должен возвращать модифицированную строку UTF8.

Подробнее здесь: https://stackoverflow.com/questions/784 ... illegal-st
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»