代码如下。我有一个全局的字符串str(char数组),要把它通过本地方法输出,但在str转化为jstring的时候出现乱码。我是在本地调用String类中的static String copyValueOf(char[] data) 方法转换的。求解答乱码原因及解决办法!
不要告诉我可以用其他办法将char数组转换为jstring,我也会其他方法,我现在就想知道这个乱码的原因及解决办法。跪求大牛解决,在线等!!!JNIEXPORT jstring JNICALL Java_test_Test2_FlushBuffer
(JNIEnv* env, jobject obj)
{
static char p[1024];
strcpy(p,str);
strcpy(str,"");
const jchar *jp = (jchar*)p;
jcharArray ca = env->NewCharArray(1024);
jclass jc = env->FindClass("java/lang/String");
jmethodID methodId = env->GetStaticMethodID(jc, "copyValueOf", "([C)Ljava/lang/String;");
env->SetCharArrayRegion(ca, 0, 1024,jp);
char *a = NULL;
//puts((char*)*jp);
sprintf(a,"%d",123456);
return (jstring)env->CallStaticObjectMethod(jc,methodId,ca);
//return env->NewStringUTF(p);
}
不要告诉我可以用其他办法将char数组转换为jstring,我也会其他方法,我现在就想知道这个乱码的原因及解决办法。跪求大牛解决,在线等!!!JNIEXPORT jstring JNICALL Java_test_Test2_FlushBuffer
(JNIEnv* env, jobject obj)
{
static char p[1024];
strcpy(p,str);
strcpy(str,"");
const jchar *jp = (jchar*)p;
jcharArray ca = env->NewCharArray(1024);
jclass jc = env->FindClass("java/lang/String");
jmethodID methodId = env->GetStaticMethodID(jc, "copyValueOf", "([C)Ljava/lang/String;");
env->SetCharArrayRegion(ca, 0, 1024,jp);
char *a = NULL;
//puts((char*)*jp);
sprintf(a,"%d",123456);
return (jstring)env->CallStaticObjectMethod(jc,methodId,ca);
//return env->NewStringUTF(p);
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货