2
ご覧のとおり、jbyte * strからutf文字列を取得します。文字列の各文字には2バイトの1バイトがありますか?AndroidでNtkのプログラミングでUTF文字列を取得する
ここJNIEXPORT jstring JNICALL
Java_Prompt_getLine(JNIEnv *env, jobject obj, jstring prompt) {
char buf[128];
const jbyte *str;
str = (env)->GetStringUTFChars(env, prompt, NULL);
if (str == NULL) {
return NULL;/OutOfMemoryError already thrown */
}
printf("%s", str);
(*env)->ReleaseStringUTFChars(env, prompt, str);
/* We assume here that the user does not type more than * 127 characters */
scanf("%s", buf);
return (*env)->NewStringUTF(env, buf);
}
いいえ! 'GetStringUTFChars'によって返される配列は、変更されたUTF-8エンコーディングのUnicode文字です。各文字は1〜6バイトをとります。 1文字あたり1バイトの文字セット/エンコーディングが必要な場合は、 'String.getBytes'オーバーロードまたは' Charset'クラスを使用します。 –