我在用c/c++做android的东西,新手,有很多董的东东。在用jni传递中文时,会出现乱码的情况,要进行编码转换。那位大侠有相关的转码方法。
bool handleString(char* name)
{
jstring rtnname = 0;
int slenname = strlen(name);
unsigned short * namebuffer = 0;
if( slenname == 0 )
rtnname = mEnv->NewStringUTF(name);
else
{
wchar_t* wname = NULL;
setlocale(LC_ALL,"");
int namelength=mbstowcs(wname,name,strlen(name)*2);
namebuffer = (unsigned short *)malloc(namelength*2 + 1 );
if((rtnname = mEnv->NewString( (jchar*)namebuffer, namelength )) == NULL)
return false;
if( namebuffer )
free(namebuffer );
}
return true;
}
这个方法就不要帖了。在android的里找不到mbstowcs,用别人修改过的ndk-r4版,也找不到,不知道在MakeFIle里要加什么连接设置。
同一问题,还有一个帖子:http://topic.csdn.net/u/20110415/17/f5b72204-e94c-47bb-a6e1-b5a79e05a415.html?seed=1538378095&r=72832678#r_72832678
解决的化两个帖子都会一下,一起给分。
bool handleString(char* name)
{
jstring rtnname = 0;
int slenname = strlen(name);
unsigned short * namebuffer = 0;
if( slenname == 0 )
rtnname = mEnv->NewStringUTF(name);
else
{
wchar_t* wname = NULL;
setlocale(LC_ALL,"");
int namelength=mbstowcs(wname,name,strlen(name)*2);
namebuffer = (unsigned short *)malloc(namelength*2 + 1 );
if((rtnname = mEnv->NewString( (jchar*)namebuffer, namelength )) == NULL)
return false;
if( namebuffer )
free(namebuffer );
}
return true;
}
这个方法就不要帖了。在android的里找不到mbstowcs,用别人修改过的ndk-r4版,也找不到,不知道在MakeFIle里要加什么连接设置。
同一问题,还有一个帖子:http://topic.csdn.net/u/20110415/17/f5b72204-e94c-47bb-a6e1-b5a79e05a415.html?seed=1538378095&r=72832678#r_72832678
解决的化两个帖子都会一下,一起给分。
android这个板块是不是不行啊?我问了好多问题,怎么都没有好的解决办法。还是要自己一点点弄!
头大.......