使用jni从c发送UTF字符到java

我想将Hangul(使用UTF的韩文符号)文本从C发送到JAVA.
但是JAVA获得的结果不正确
例:

JNIEXPORT jstring JNICALL Java_get_1term
  (JNIEnv *env,jobject,jint termInd)
{
    const char *str = "음뮤원음직음원샘";
    return (env)->NewStringUTF(str);
}

但在那种情况下JAVA得到了错误的字符串.

我在其他帖子中找不到我的问题的答案,如果有同样的问题,请给我链接

解决方法

试试这个(从 here采取和改编):

jstring WindowsToJstring(JNIEnv* pEnv,char* cstr) {
   jstring retJstring = NULL;
   int slen = strlen(cstr);
   int length = MultiByteToWideChar( CP_ACP,(LPCSTR)cstr,slen,NULL,0 );
   unsigned short* tempbuffer = (unsigned short *)malloc( length*2 + 1 );
   MultiByteToWideChar( CP_ACP,(LPWSTR)tempbuffer,length );
   retJstring = (pEnv)->NewString((jchar*)tempbuffer,length );
   free( tempbuffer );
   return retJstring;
}

编辑正如@Kerrek SB正确指出的那样,这是一个仅限Windows的解决方案

相关文章

一.C语言中的static关键字 在C语言中,static可以用来修饰局...
浅谈C/C++中的指针和数组(二) 前面已经讨论了指针...
浅谈C/C++中的指针和数组(一)指针是C/C++...
从两个例子分析C语言的声明 在读《C专家编程》一书的第三章时...
C语言文件操作解析(一)在讨论C语言文件操作之前,先了解一下...
C语言文件操作解析(三) 在前面已经讨论了文件打开操作,下面...