- 论坛徽章:
- 0
|
由于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 |
|