我想将Hangul(使用UTF的韩文符号)文本从C发送到JAVA。 但是JAVA获得的结果不正确 示例:
JNIEXPORT jstring JNICALL Java_get_1term
(JNIEnv *env, jobject, jint termInd)
{
const char *str = "음뮤원음직음원샘";
return (env)->NewStringUTF(str);
}
但是在那种情况下JAVA得到了错误的字符串。
我在其他帖子中找不到我的问题的答案,如果有同样的问题请给我链接
答案 0 :(得分:1)
尝试这一点(从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的解决方案