急求助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);
你在调用上面函数的时候把两个参数顺序搞颠倒了