JNI调用等同于MultiByteToWideChar(...)?

时间:2013-10-03 14:28:32

标签: java c++ java-native-interface jnienv

我使用的是WideCharToMultiByte,但我将其替换为env-> GetStringUTFChars。

我现在想用一个JNI env等效调用替换MultiBytetoWideChar。

是否存在通话?是GetStringChars吗?

1 个答案:

答案 0 :(得分:0)

Java非常能够在众多字符集/编码之间进行转换。 JNI本身并非如此。

NewStringUTF采用修改后的UTF-8编码的Unicode字符串。 NewString采用UTF-16编码的Unicode字符串,但除非您与.NET互操作,否则您不太可能拥有它。

相反,您应该使用从字符串中创建Java byte[]数组,获取String构造函数方法并将byte[]数组传递给它,并且可选地,将其传递给字符集的名称/编码。如果未传递字符集/编码,JVM将使用系统中当前的“本机”(可能取决于线程设置,用户设置等)。