字符集转换(iconv的相关内容)

gb2312为简体中文,而utf-8是国际通用标准(包括世界上所有语言),gbk又是对gb2312的扩充。


iconv命令可以将一种已知的字符集文件转换成另一种已知的字符集文件 它的作用是在多种国际编码格式之间进行文本内码的转换。


作为编程接口的iconv包括3个函数:

  • iconv_open函数用于初始化用于转换的内部缓冲区,需要指明需要从何种编码方式转换到哪一种。

  • iconv函数进行实际的转换,需要给出两个间接缓冲区指针和剩余字节数指针。该函数需要更新所有相关信息,因此将不可改写的指针传递给iconv是错误的。

  • iconv_close函数释放iconv_open函数的缓冲区。


#include <iconv.h>
itn main()
{
    char * pIn = info;
    char * pOut = outbuf;
    memset(outbuf,0,12);
    iconv_t conv = iconv_open("GBK","UTF-8");
    iconv(conv, &pIn, &srclen, &pOut, &dstlen);      iconv_close(conv);
    cout << outbuf <<endl;
}

封装成函数

void LedManager::UtfToGb2312(char *info,char *outbuf,size_t srclen,size_t dstlen)
{

    char * pIn = info;
    char * pOut = outbuf;
    memset(outbuf,0,12);
    iconv_t conv = iconv_open("GBK","UTF-8");
    iconv(conv, &pIn, &srclen, &pOut, &dstlen);
    iconv_close(conv);
    cout << outbuf <<endl;

}

发布了30 篇原创文章 · 获赞 14 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/fzl_blog/article/details/68923854