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


  1. bool handleString(char* name)   
  2.     {   
  3.       jstring rtnname = 0;                    
  4.       int slenname = strlen(name);   
  5.       unsigned short * namebuffer = 0;       
  6.       if( slenname == 0 )                    
  7.          rtnname = mEnv->NewStringUTF(name);    
  8.       else                                   
  9.       {                       
  10.        wchar_t* wname = NULL;   
  11.        setlocale(LC_ALL,"");   
  12.          
  13.   
  14.            
  15.        int namelength=mbstowcs(wname,name,strlen(name)*2);   
  16.           
  17.         namebuffer = (unsigned short *)malloc(namelength*2 + 1 );   
  18.        if((rtnname = mEnv->NewString(  (jchar*)namebuffer, namelength )) == NULL)    
  19.               return false;                     
  20.                                                                                                
  21.        if( namebuffer )   
  22.        free(namebuffer );   
  23.       }         
  24.                      
  25.        return true;   
  26.     }   
  27.                
  28.      bool isASCII(const char* chp)   
  29.      {   
  30.        char ch;   
  31.        bool flag;   
  32.        while ((ch = *chp++))   
  33.         {    
  34.          flag = false;                   
  35.          if (ch & 0x80)    
  36.          {   
  37.           flag = true;   
  38.            break;   
  39.          }   
  40.         }   
  41.        return flag;           
  42.      }   
  43.           

相关内容