【发布时间】:2019-11-07 10:13:04
【问题描述】:
我有一个带有笑脸的 C/C++ char* 字符串????但其余内容为 ASCII。例如,Hello World ????。
当我尝试使用 NewStringUTF 和 NewString 在 JNI 中创建 Java 字符串时,行为未定义。
创建 Java 字符串的正确方法是什么?
【问题讨论】:
-
@KiriSakow 检查它为什么?这个问题是关于相反的操作。
-
笑脸是如何编码的? (使用了哪些实际字节)在 UTF-8 编码中,它应该是序列
f0 9f 98 8d(4 个字节)你所说的“行为未定义”是什么意思?你如何测试这个? -
我能够解决它。 char* 指向真正的 UTF-8 数据,而不是经过修改的 UTF-8 数据。因此,我手动将 UTF-8 解码为 UTF-16,然后将其传递给 JNI NewString() 函数。
-
您可以将此作为(自我)答案发布吗?这可能对其他人有用。
标签: java c++ java-native-interface