我在用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
解决的化两个帖子都会一下,一起给分。

解决方案 »

  1.   

    还是没人!!
    android这个板块是不是不行啊?我问了好多问题,怎么都没有好的解决办法。还是要自己一点点弄!
    头大.......
      

  2.   

    如果没有mbstowcs这个函数,那就自己些一个GB码转UNICODE的函数转化一个就可以了
      

  3.   

    把java,jni,c/C++的编码形式都改一下,都改成utf-8,这样最简单。要不就自己下一下iconv源码。写一个自己的转码程序。
      

  4.   

    也遇到这样的问题,查了半天网不知道怎么去转,有说去调JAVA层接口来转换的。