...
JNI does provide methods that work with Modified UTF-8 (see [API 2013], Interface DataInput, section "Modified UTF-8"). The advantage of working with Modified UTF-8 is that it encodes \u0000 as 0xc0 0x80 instead of 0x00. This allows the use of C-style null-terminated strings that can be handled by the usual C standard library string functions. However, arbitrary UTF-8 data cannot be expected to work correctly in JNI. Data passed to the NewStringUTF()
function must be in Modified UTF-8 format. Character data read from a file or stream cannot be passed to the NewStringUTF()
function without being filtered to convert the high-ASCII characters to Modified UTF-8.
...