免费注册 查看新帖 |

Chinaunix

广告
  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1017 | 回复: 0
打印 上一主题 下一主题

在Libxml2中解决中文问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-07-11 09:54 |只看该作者 |倒序浏览
由于libxml2内部默认的编码方式为utf-8,所以当在xml文档使用中文时必须指明支持中文编码的编码方式(如gb2312),否则在解析和生成时将会报错。另外显示、输入、输出的时候还必须进行编码转换,不然将很有可能出现乱码。
如使用 xmlNodeGetContent(xmlNodePtr cur)接口获取一个含有中文的节点内容后,为了能够正常显示,必须将返回值进行编码转换。
下面是编码转换函数可参考如下(使用时需要加上头文件iconv.h):
/***********************************************************************************
功能:
       字符编码转换
输入参数:
       @fromCode:转换前的字符编码方式
       @toCode:    转换后的字符编码方式
       @text:          待转换的字符串
返回值:
      成功: 编码方式为@toCode的@text字符串
      失败:返回NULL
*************************************************************************************/
const char* encodeConvert(char* fromCode,char* toCode,const char* text)
       {
              static char bufout[1024],*sin,*sout;
              int length_in,length_out,err;
              iconv_t c_pt;
      c_pt=iconv_open(toCode,fromCode);
             if(c_pt==(iconv_t)-1)
             {
                     cout "
      iconv(c_pt,NULL,NULL,NULL,NULL);
      length_in=strlen(text)+1;
             length_out=1024;
             sin=(char*)text;
             sout=bufout;
      err=iconv(c_pt,&sin,(size_t*)&length_in,&sout,(size_t*)&length_out);
             if(err==-1)
             {
                     cout
       iconv_close(c_pt);
       return bufout;


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/43025/showart_337730.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP