[高分求救啊]jni的C++实现中,调用iconv转UTF-8到GB18030老失败
在linux下转UTF-8到GB18030,结果老为空,都试了几天了,结果都不正确,谁能救救我啊,以下是我的源代码:
EncodeMessage:该参数类型为jsring,EncodeMessage="ab你好吗"(从java传过来的)
char *temp;//="";
int len,reqBuffLen;
size_t length,length2=100,length3=100;
const jchar *jwstr;
//temp=(char*)env->GetStringChars(EncodeMessage,0);//返回的应当是UTF-16,即Unicode
//reqBuffLen=env->GetStringLength(EncodeMessage);
temp=(char*)env->GetStringUTFChars(EncodeMessage,0);//返回的应当是UTF-8
reqBuffLen=env->GetStringUTFLength(EncodeMessage);
length = reqBuffLen;
printf("temp=%s\n",temp);//正确显示
printf("reqBuffLen=%d\n",reqBuffLen);
char *pmbbuf=(char*)malloc(length);
iconv_t cd;
// cd=iconv_open("GB18030","UTF-16");
cd=iconv_open("GB18030","UTF-8");//成功
if (cd==0){
printf("iconv_open fails\n");
return -1;
}
size_t rt;
if(rt=(int)iconv(cd,&temp,&length,&pmbbuf,&length2)==-1){//成功
printf("iconv failse\n");
return -1;
}
iconv_close(cd);
printf("pmbbuf=%s\n",pmbbuf);//pmbbuf结果不是空,就是乱七八糟的东西
printf("len=%d\n",length2);
结果不兑,那位大侠给看看啊,急死我了