大龙的博客

常用链接

统计

最新评论

在Libxml2中解决中文问题(转)

 

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

posted on 2008-05-30 02:43 大龙 阅读(1387) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理