首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

急linux c++ gb2312与unicode转码有关问题!贴上代码

2012-04-16 
急求助linux c++ gb2312与unicode转码问题!贴上代码void SCEncoding::UnicodeToGB2312(char* pOut,char* u

急求助linux c++ gb2312与unicode转码问题!贴上代码
void SCEncoding::UnicodeToGB2312(char* pOut,char* uData,size_t pLen) /**Unicode to GB2312**/
  {
  char* _pOut=pOut;
  char* _uData=uData;
  size_t outLength=255;
  iconv_t cd;
  cd = iconv_open("unicode","gb2312");
  memset(pOut,0,outLength);
  iconv(cd,&_uData,&pLen,&_pOut,&outLength);
  iconv_close(cd);
  }
  void SCEncoding::Gb2312ToUnicode(char* pOut,char* gbBuffer,size_t pLen) /** GB2312 to Unicode**/
  {
  char* _pOut=pOut;
  char* _gbBuffer=gbBuffer;
  size_t outLength=255;
  iconv_t cd;
  cd = iconv_open("gb2312","unicode");
  memset(pOut,0,outLength);
  iconv(cd,&_gbBuffer,&pLen,&_pOut,&outLength);
  iconv_close(cd);


  }
int main()
{
SCEncoding encoding;

  char* sl="手机";
char* sk;
sk=(char*)malloc(255);
  encoding.Gb2312ToUnicode(sk,sl,strlen(sl));
  char* sk1;
  sk1=(char*)malloc(255);

  encoding.UnicodeToGB2312(sk1,sk,strlen(sk));


  cout<<sk1<<endl;
}

为什么打印出来“???”

[解决办法]
iconv_t iconv_open (const char* tocode, const char* fromcode);
你在调用上面函数的时候把两个参数顺序搞颠倒了

热点排行