我想将C的韩文(韩文符号使用UTF)发送到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, 0, (LPCSTR)cstr, slen, NULL, 0 );
   unsigned short* tempbuffer = (unsigned short *)malloc( length*2 + 1 );
   MultiByteToWideChar( CP_ACP, 0, (LPCSTR)cstr, slen, (LPWSTR)tempbuffer, length );
   retJstring = (pEnv)->NewString((jchar*)tempbuffer, length );
   free( tempbuffer );
   return retJstring;
}

编辑 @Kerrek SB正确指出,这是仅Windows解决方案

10-04 18:34