linux里汉字字符是什么编码类型,linux下的字符编码问题

#include

#include

#include

#include

char *k_xml_iconv(const char *str, const char *to, const char *from)

{

iconv_t cd;

char *inbuf;

char *outbuf;

char *dstbuf;

size_t dstlen;

size_t size;

size_t inleft;

size_t outleft;

dstlen  = strlen(str) * 3;

dstbuf = malloc(dstlen);

cd = iconv_open(to, from);

if ((iconv_t)-1 == cd) {

return 0;

}

inbuf   = (char *)str;

outbuf  = dstbuf;

inleft  = strlen(str);

outleft = dstlen;

size = iconv(cd, &inbuf, &inleft, &outbuf, &outleft);

iconv_close(cd);

if ((size_t)-1 == size) {

return 0;

}

if (inleft > 0) {

return 0;

}

dstbuf[dstlen - outleft] = 0;

return (dstbuf);

}

int main(void)

{

char gb2312[] = "oo?";

char *utf8;

utf8 = k_xml_iconv(gb2312, "UTF-8", "GB18030");

printf("%sn", utf8);

return 0;

}

[cqsm@cqsm kobus]$ cat a.c

#include

#include

#include

#include

char *k_xml_iconv(const char *str, const char *to, const char *from)

{

iconv_t cd;

char *inbuf;

char *outbuf;

char *dstbuf;

size_t dstlen;

size_t size;

size_t inleft;

size_t outleft;

dstlen  = strlen(str) * 3;

dstbuf = malloc(dstlen);

cd = iconv_open(to, from);

if ((iconv_t)-1 == cd) {

return 0;

}

inbuf   = (char *)str;

outbuf  = dstbuf;

inleft  = strlen(str);

outleft = dstlen;

size = iconv(cd, &inbuf, &inleft, &outbuf, &outleft);

iconv_close(cd);

if ((size_t)-1 == size) {

return 0;

}

if (inleft > 0) {

return 0;

}

dstbuf[dstlen - outleft] = 0;

return (dstbuf);

}

int main(void)

{

char gb2312[] = "汉字";

char *utf8;

utf8 = k_xml_iconv(gb2312, "UTF-8", "GB18030");

printf("%sn", utf8);

return 0;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值