当前位置: 技术问答>linux和unix
linux 系统下c++ 用expat解析xml文件发生的字符编码转换的问题gbk---->utf-8
来源: 互联网 发布时间:2015-11-10
本文导语: 在linux系统下c++用expat做了一个xml解析程序,现在有一个问题。xml文件的第一行中申明的 encoding="utf-8"时,即使xml文件中有中文字符,也能解析出来,但是,我就是对这样的即encoding="GBK"的文件进行解析,出现unknown en...
在linux系统下c++用expat做了一个xml解析程序,现在有一个问题。xml文件的第一行中申明的
encoding="utf-8"时,即使xml文件中有中文字符,也能解析出来,但是,我就是对这样的即encoding="GBK"的文件进行解析,出现unknown encoding的错误提示,于是我做了如下的工作:
在XML_Parser parser = XML_ParserCreate(NULL);之后加了
XML_SetUnknownEncodingHandler(parser,XMLEncodingHandle,0);
XMLEncodingHandle函数如下:
static int XMLCALL
XMLEncodingHandle(void *encodingHandlerData,
const XML_Char *name,
XML_Encoding *info)
{
int i;
if( !name || strcmp(name,"GBK"))
{
return XML_STATUS_ERROR;
}
for(i=0;imap[i] = i;
for(;imap[i] = -2;
info->convert = Convert;
info->release = NULL;
return 1;//XML_STATUS_OK;
}
Convert这个函数不知道怎么写了,现在是空的,但是不会出现unknown encoding的错误提示了,但在遇到中文时就会提示not well-formed (invalid token)
请高手帮忙,谢谢了 由于时间太紧张,所以如果方便的话直接加我指教
msn:ftb_cyc@163.com
encoding="utf-8"时,即使xml文件中有中文字符,也能解析出来,但是,我就是对这样的即encoding="GBK"的文件进行解析,出现unknown encoding的错误提示,于是我做了如下的工作:
在XML_Parser parser = XML_ParserCreate(NULL);之后加了
XML_SetUnknownEncodingHandler(parser,XMLEncodingHandle,0);
XMLEncodingHandle函数如下:
static int XMLCALL
XMLEncodingHandle(void *encodingHandlerData,
const XML_Char *name,
XML_Encoding *info)
{
int i;
if( !name || strcmp(name,"GBK"))
{
return XML_STATUS_ERROR;
}
for(i=0;imap[i] = i;
for(;imap[i] = -2;
info->convert = Convert;
info->release = NULL;
return 1;//XML_STATUS_OK;
}
Convert这个函数不知道怎么写了,现在是空的,但是不会出现unknown encoding的错误提示了,但在遇到中文时就会提示not well-formed (invalid token)
请高手帮忙,谢谢了 由于时间太紧张,所以如果方便的话直接加我指教
msn:ftb_cyc@163.com
|
学习c++