我理解你的意思,但是你误会操作流程了,其实在cpp里已经是规格的utf-8转gb2312操作了

解决方案 »

  1.   

    http://blog.csdn.net/yiyaaixuexi/archive/2011/02/14/6183126.aspx
    读一下再看代码,永远都是拿来主义,那怎么能进步?
      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,"");
           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;
     }
            
      

  2.   


    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,"");
                //sorry,i forgot it 
       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;
     }
            
      

  3.   

    顺便问一下,是不是我在android db中存的就是乱码,程序中读出来后也不能再转成正常显示了?
      

  4.   

    我把模拟器的external-15113e14.db导出到pc上,查看mp3文件,title字段是乱码,是不是在程序中也不能转成正确编码了呢?
      

  5.   


    no no no~  编码本身不能说是错误,人家编码编的好好的,都是打开文件的时候,解码出的错。