繁体   English   中英

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

[英]sending UTF chars to java from c++ using jni

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

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

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

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

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

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的解决方案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM