но когда я пытаюсь передать строку, заканчивающуюся нулевым символом, закодированным с использованием двух байтов 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