как конвертировать char [] в JSTRIN в JNI? - PullRequest
8 голосов
/ 10 января 2012

В jni я хочу преобразовать char * в jstring, используя следующий метод:

env->NewStringUTF(chm_pcText)

, он работает для английского текста, но не с китайским, и получить следующее сообщение:

JNI WARNING: illegal continuation byte.

Как это решить?

Ответы [ 2 ]

18 голосов
/ 10 января 2012

Я просто решаю это: два шага, первый: преобразуйте char * в jbyteArray, затем вызовите конструктор java String для генерации jstring.

 strClass = global_env->FindClass("java/lang/String"); 
 ctorID = global_env->GetMethodID(strClass, "<init>", "([BLjava/lang/String;)V"); 
 encoding = global_env->NewStringUTF("GBK"); 

jbyteArray bytes = global_env->NewByteArray(strlen(chm_pcText)); 
global_env->SetByteArrayRegion(bytes, 0, strlen(chm_pcText), (jbyte*)chm_pcText); 
jstring str = (jstring)global_env->NewObject(strClass, ctorID, bytes, encoding);
1 голос
/ 25 ноября 2015

NewStringUTF работал для меня.Вот код, который работал для меня:

char *returnString = (char*)malloc(10);
strcpy(returnString, "电脑");
return  (*jnienv)->NewStringUTF(jnienv, returnString);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...