xml格式的汉等字符解析

来源:互联网 发布:倍投软件好用不 编辑:程序博客网 时间:2024/06/05 05:21

作者:帅得不敢出门   C++爱好者灌水天堂群 3503799   转载请保留此信息

     由于要解析fb2电子书文本,这方面似乎俄文资料比较多啊,没办法,摸着石头过河吧
利用网上的一个软件any2fb2把一段文本转换成fb2,用editplus直接打开fb2
文本内容:
汉 fb2 测试

fb2内容:
<?xml version="1.0" encoding="Windows-1251"?>
<FictionBook xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.gribuser.ru/xml/fictionbook/2.0"><description><title-info><genre></genre><author><first-name></first-name><middle-name></middle-name><last-name></last-name></author><book-title></book-title></title-info></description><body xmlns:fb="http://www.gribuser.ru/xml/fictionbook/2.0" xmlns:xlink="http://www.w3.org/1999/xlink">
  <section><p>&#27721; fb2 &#27979;&#35797;</p>
  </section>
 </body>
</FictionBook>

有发现,小样,原来你穿了fb2的马甲,骨子里却是xml的种。
xml解析网上资料太多了,不感冒,现在说下这里面的"&#"开头,中间为数字,';'号结尾的东东吧。比如&#27721;其实就是'汉',
这些字符浏览器可以自动转换的,现在我们来实现这个转换。  
    开头与结尾的字符不管它,取中间数字部分,网上有人说这些是utf-8的编码,不好意思,至少在这里是不正确的,
比如27721,这其实是十进制的,而不是十六进制,把它转成十六进制为0x6c49,正是'汉'的ucs2编码,其utf-8编码为E6B189。
    接下来把它转换成ascii
 WCHAR * wszUcs2 = L"/x6c49";
 int len = WideCharToMultiByte(CP_ACP, 0, wszUcs2, -1, NULL, 0, NULL, NULL);
 char *szGBK=new char[len + 1];
 szGBK[len] = '/0';
 WideCharToMultiByte (CP_ACP, 0, wszUcs2, -1, szGBK, len, NULL,NULL);
 MessageBoxA(NULL, szGBK, NULL, MB_OK);//输出'汉'
 delete[] szGBK;

 

原创粉丝点击