红联Linux门户
Linux帮助

Linux下转换charset

发布时间:2015-02-07 09:54:23来源:linux网站作者:qwidget

Linux下转charset,由于不知道utf8一个字符有多长,所以不知道转换后的串有多长,开大缓冲是一个办法,但是如果输入太大并且并发较高的话有占用内存太大的问题。方案暂时折中为对文件采用命令转换,消息采用大缓冲方式iconv()来转换。不敢全部用命令,开销大。


//utf8文件转为gb2312文件  
int utf8_to_gb2312_file(char* szUtf8FileName,char* szGb2312FileName)  
{  
if(szUtf8FileName==NULL || szGb2312FileName==NULL)  
{  
return -1;  
}  
char szCommand[1024]={0};  
sprintf(szCommand,"iconv -f utf8 -t gb2312 %s | cat > %s",szUtf8FileName,szGb2312FileName);  
return system(szCommand);  
}  
     
//gb2312文件转为utf8文件  
int gb2312_to_utf8_file(char* szGb2312FileName,char* szUtf8FileName)  
{  
if(szGb2312FileName==NULL || szUtf8FileName==NULL)  
{  
return -1;  
}  
char szCommand[1024]={0};  
sprintf(szCommand,"iconv -f gb2312 -t utf8 %s | cat > %s",szGb2312FileName,szUtf8FileName);  
return system(szCommand);  
}