JavaDoc说"空字节'\ u0000'以2字节格式而不是1字节编码,因此编码的字符串永远不会嵌入空值."
但这甚至意味着什么呢?在这种情况下,什么是嵌入式null?我试图从Java保存的UTF-8字符串转换为"真正的"UTF-8.
Tho*_*sen 16
在C中,字符串由字节值00终止.
这里的事情是你可以在Java字符串中使用0-chars但是为了避免在将字符串传递给C(所有本地方法都写入)时出现混淆,字符以另一种方式编码,即作为两个字节
11000000 10000000
Run Code Online (Sandbox Code Playgroud)
(根据javadoc)这两者实际上都不是00.
这是一个解决你无法轻易改变的事情的黑客.
另请注意,这是有效的UTF-8并正确解码为00.