在Ubuntu 下用Eclipse做C++开发的时候,Eclipse默认字符UTF-8,UTF-8是用三个字节来表示一个汉字的,但是很多时候,我们需要的是2个字节表示一个汉字,这时候,可以用iconv函数实现,具体如下:
#include <stdio.h>
#include <string.h>
#include <iconv.h>
int main()
{
char inbuf[50] = "我";
char outbuf[60];
memset(outbuf,'/0',sizeof(outbuf));
char *pin = inbuf;
char *pout = outbuf;
printf(">>before convert:%d",strlen(inbuf));
size_t inlen = strlen(inbuf) + 1;
size_t outlen = 60;
iconv_t cd = iconv_open("GB2312","UTF-8");
if (cd == (iconv_t) (-1))
{
perror("iconv_open");
}
if ((int) iconv(cd, &pin, &inlen, &pout, &outlen) == -1)
{
perror("iconv()");
}
printf(">>>before convert,UTF8:%s,length:%d/n", inbuf,strlen(inbuf));
printf(">>>after convert,GB2312:%s,length:%d/n", outbuf,strlen(outbuf));
}