毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> 移动平台 >> 正文

android jni 中文乱码

更新时间:2013-6-28:  来源:毕业论文

android jni 中文乱码

下面这个在java中调用就返回乱码了。
JNIEXPORT jstring JNICALL Java_com_example_nativeaudio_NativeAudio_readFromAssets(JNIEnv* env)
{
    return env->NewStringUTF("你好");
}
下面这个在java中调用没有问题,返回的是hello world
JNIEXPORT jstring JNICALL Java_com_example_nativeaudio_NativeAudio_readFromAssets(JNIEnv* env)
{
    return env->NewStringUTF("hello world");
}

网上查了下解决方案是:jni返回给java的字符串,c/c++首先应该负责把这个字符串变成UTF-8或者UTF-16格式
想问下有什么函数可以把字符串转换成UTF-8

String str="XXXX";
str=new String(str.getBytes(), "UTF-8");

MultiByteToWideChar 这是windows API
Android 是linux内核不适用

如果是直接在.c文件写中文的话 你保存成utf-8就可以了

如果要转的话用这个代码 我一直在用的


C/C++ code?void (*ucnv_convert)(const char *,const char *, char * , int32_t , const char *, int32_t,int32_t*)=0;    int dllOpencuuc()  {               void* pDL = dlopen("/system/lib/libicuuc.so", RTLD_LAZY);        ucnv_convert = (void (*)(const char *, const char *, char * , int32_t , const char *, int32_t,int32_t*))dlsym(pDL, "ucnv_convert_44");//ucnv_convert_44(2.3) ucnv_convert_4_2(2.2)             if(pDL)     {       dlclose(pDL);     }       if(ucnv_convert)       {                           return 1;       }else      {          ucnv_convert  = (void (*)(const char *, const char *, char * , int32_t , const char *, int32_t,int32_t*))dlsym(pDL, "ucnv_convert_46");//ucnv_convert_44(2.3) ucnv_convert_4_2(2.2) ucnv_convert_46(4.0)                     if(ucnv_convert)          {                            return 1;          }          ucnv_convert  = (void (*)(const char *, const char *, char * , int32_t , const char *, int32_t,int32_t*))dlsym(pDL, "ucnv_convert_4_2");          if(ucnv_convert)          {                            return 1;          }       }           return 0;          }      int GB2312ToUtf8( char *CP,  char *inbuf ,  size_t _in_size , char *outbuf , size_t  _out_size )  {            int errcode = 0;      ucnv_convert("utf-8",CP, outbuf, _out_size, inbuf, _in_size,&errcode);     if(errcode)    {       return -1;    }    else   {      return 0;    }         }    int Utf8ToGB2312(char *CP,char* inbuf, size_t _in_size, char* outbuf, size_t _out_size) {    int errcode = 0;      ucnv_convert("GBK",CP, outbuf, _out_size, inbuf, _in_size,&errcode);     if(errcode)    {       return -1;    }    else   {      return 0;    } } 

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。