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);
- }