java的实体里定义的char[] name JNI定义结构体属性char[] name将结构体属性值(中文)传给java是乱码,怎么解决?不要让我改变属性类型!
人生最曼妙的风景,竟是内心的淡定与从容!
Rujuk artikel ini
Anda mesti mengetahui terlebih dahulu apakah pengekodan pada kedua-dua belah pihak.
Rentetan char[] dalam C dikodkan UTF-8 secara lalai Anda boleh menggunakan fungsi NewStringUTF() JNIEnv untuk menukar rentetan char[] dalam C kepada rentetan Java 🎜>
jstring NewStringUTF(const char* bytes)
Lihat contoh paling mudah:
JNIEXPORT jstring JNICALL Java_com_example_gnaix_ndk_NativeMethod_getString (JNIEnv *env, jclass object, jstring str){ //1. 将unicode编码的java字符串转换成C风格字符串 const char *buf_name = env->GetStringUTFChars(str, 0); if(buf_name == NULL){ return NULL; } int len = strlen(buf_name); char n_name[len]; strcpy(n_name, buf_name); //2. 释放内存 env->ReleaseStringUTFChars(str, buf_name); //3. 处理 n_name="ro.serialno" char buf[1024]; __system_property_get(n_name, buf); LOGD("serialno : %s", buf); //4. 去掉尾部"rrreee" int len_buf = strlen(buf); string result(buf, len_buf); return env->NewStringUTF(result.c_str()); }
Rujuk artikel ini
Anda mesti mengetahui terlebih dahulu apakah pengekodan pada kedua-dua belah pihak.
Rentetan char[] dalam C dikodkan UTF-8 secara lalai Anda boleh menggunakan fungsi NewStringUTF() JNIEnv untuk menukar rentetan char[] dalam C kepada rentetan Java 🎜>
Lihat contoh paling mudah: