отправка символов UTF в java из c ++ с использованием jni - PullRequest
4 голосов
/ 24 ноября 2011

Я хочу отправить текст Hangul (корейские символы с использованием UTF) из C в JAVA. Но JAVA получает неверные результаты Пример:

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

но в этом случае JAVA получила неверную строку.

Я не смог найти ответ на свой вопрос в других сообщениях, если есть такой же вопрос, пожалуйста, дайте мне ссылку на них

1 Ответ

1 голос
/ 24 ноября 2011

попробуйте с этим (взято и адаптировано из здесь ):

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...