我想将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解决方案