提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
Linux 下GBK中文转Unicode转UTF-8
一、使用的库libiconv
用到libiconv的库文件
二、添加头文件
1.引入库
需要的头文件
#include <iconv.h>
2.具体的代码
代码如下(示例):
int code_convert(char *from_charset, char *to_charset, char *inbuf, size_t inlen,char *outbuf, size_t outlen)
{
iconv_t cd;
char **pin = &inbuf;
char **pout = &outbuf;
cd = iconv_open(to_charset, from_charset);
if (cd == 0)
return -1;
memset(outbuf, 0, outlen);
if (iconv(cd, pin, &inlen, pout, &outlen) == -1)
return -1;
iconv_close(cd);
*pout = '\0';
return 0;
}
int u2g(char *inbuf, size_t inlen, char *outbuf, size_t outlen)
{
//unicode utf-8 UCS-2LE UCS-2BE
return code_convert("utf-8", "UCS-2LE", inbuf, inlen, outbuf, outlen);
}
int g2u(char *inbuf, size_t inlen, char *outbuf, size_t outlen)
{
//unicode utf-8 UCS-2LE UCS-2BE
return code_convert("UCS-2LE", "utf-8", inbuf, inlen, outbuf, outlen);
}
int main(void) {
char *s = "这";//utf8
char buf[10];
u2g(s, strlen(s), buf, sizeof(buf));
printf("gbk = %x %x\n",buf[0],buf[1]);
char buf2[10];
g2u(buf, strlen(buf), buf2, sizeof(buf2));
printf("utf8 = %x %x\n",buf2[0],buf2[1]);
return 1;
}
总结
使用函数iconv进行编码转换。