您的位置:首页 > 移动开发 > Android开发

Android下调用jni时进行的转码操作实例

2011-03-21 22:11 381 查看
之前帮人家解决乱码问题时回过一个帖子 现在总结在博客里 留起来





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;
    }
            
     bool isASCII(const char* chp)
     {
       char ch;
       bool flag;
       while ((ch = *chp++))
        { 
         flag = false;                
         if (ch & 0x80) 
         {
          flag = true;
           break;
         }
        }
       return flag;        
     }






有朋友反映找不到mbstowcs



#include <locale.h>
#include <stdlib.h>


就可以找到了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: