- 论坛徽章:
- 0
|
测试的xml文件:
- <?xml version="1.0" encoding="GB2312"?>
- <parent>文</parent>
复制代码
用enca查看了该文件的编码:
Simplified Chinese National Standard; GB2312
测试转换的代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <libxml/parser.h>
#include <libxml/xpath.h>
#include <iconv.h>
#include <libxml/xmlmemory.h>
char *Convert(char *encFrom, char *encTo, const char *in)
{
static char bufin[1024], bufout[1024], *sin, *sout;
int mode, lenin, lenout, ret, nline;
iconv_t c_pt;
if ((c_pt = iconv_open(encTo, encFrom)) == (iconv_t) - 1) {
printf("iconv_open false: %s ==> %s\n", encFrom, encTo);
return NULL;
}
iconv(c_pt, NULL, NULL, NULL, NULL);
lenin = strlen(in) + 1;
lenout = 1024;
sin = (char *) in;
sout = bufout;
ret =
iconv(c_pt, &sin, (size_t *) & lenin, &sout,
(size_t *) & lenout);
if (ret == -1) {
return NULL;
}
iconv_close(c_pt);
return bufout;
}
int main(void)
{
xmlDocPtr doc = NULL;
xmlNodePtr cur = NULL;
doc = xmlParseFile("test.xml");
cur = xmlDocGetRootElement(doc);
printf("%s\n", (char *) xmlNodeGetContent(cur));
printf("%s\n", Convert("GB2312", "utf-8", (char *) xmlNodeGetContent(cur)));
}
|
可是测试结果出现了段错误
[hm@localhost GBRead]$ ./GBRead
文
段错误
奇怪了,GB转UTF-8不是这样转吗? |
|