当前位置: 技术问答>linux c 中怎么从字符串中截取从第5为开始长4个字符的数剧?
iis7站长之家
linux下的字符编码问题
来源: 互联网 发布时间:2016-09-24
本文导语: 请问linux下如何用C对汉字进行UTF-8编码啊? 就想下面这样的: #include void main() { char *src = "汉字"; conver_chinese_to_utf8(dest, src) ; //此处将src转换为对应的UTF8编码放到dest中。 print...
请问linux下如何用C对汉字进行UTF-8编码啊? 就想下面这样的:
#include
void main()
{
char *src = "汉字";
conver_chinese_to_utf8(dest, src) ; //此处将src转换为对应的UTF8编码放到dest中。
printf("%s", dest);
}
最后的输出结果为“汉字”的UTF8编码,请问 conver_chinese_to_utf8(dest, src) 该如何写啊?
#include
void main()
{
char *src = "汉字";
conver_chinese_to_utf8(dest, src) ; //此处将src转换为对应的UTF8编码放到dest中。
printf("%s", dest);
}
最后的输出结果为“汉字”的UTF8编码,请问 conver_chinese_to_utf8(dest, src) 该如何写啊?
|
char *pin="汉字";
char out[64];
char *pout = out;
size_t inlen, outlen;
iconv_t cd;
cd = iconv_open("utf-8", "gb18030");
outlen = sizeof(out);
inlen = strlen(pin);
iconv(cd, &pin, &inlen, &pout, &outlen);
iconv_close(cd);
char out[64];
char *pout = out;
size_t inlen, outlen;
iconv_t cd;
cd = iconv_open("utf-8", "gb18030");
outlen = sizeof(out);
inlen = strlen(pin);
iconv(cd, &pin, &inlen, &pout, &outlen);
iconv_close(cd);
|
#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;