paip.解决Invalid byte 2 of 2-byte UTF-8 sequence.

这几天写一个程序,通过51CTO的MEATWEBLOG api发文.。用的LIB是XMLRPCCLIENT,结果返回的XML解析出错..提示
UTFDataFormatException: Invalid byte 2 of 2-byte UTF-8 sequence.
用miniSniffer抓包,一切都正常。。

返回的XML标明是UTF8,XML解析也是UTF8,按道理不应该有问题啊..

我想,可能返回的XML带有UTF8 BOM标头所致,得要将返回数据保存至文件研究一下。。于是下载了APACHE XMLRPCCLIENT的源码,附加上去,/org/apache/xmlrpc/client/XmlRpcStreamTransport.java  
protected Object readResponse(XmlRpcStreamRequestConfig pConfig, InputStream pStream)

这个方法,返回了原始的InputStream 流, 在此加挂了段代码,将其DUMP至文件来具体研究..
 mole.io.filex.saveToFile(pStream,"c:\\streamUTF8.txt");

经过查看此文件,发现不带有BOM标头。。不是这个引起的。。
再查看此文件编码,发现是 GBK的,而它的XML标头,<?xml version="1.0" encoding="utf-8"?>,却表明是UTF8。。

至此,原因很明了,返回的XML实际上是GBK编码的,可是它的标头又显示是UTF8编码。。所以导致XML解析器以UTF8来解析,因此出错..

解决方案: 将返回的InputStream通过GBK编码转为STRING,再将此STRING通过UTF8编码转为InputStream,这样XML的实际编码和它的标头显示的编码就一至了..然后将此处理过的STREAM返回原程序调用,果然就OK了。。。。

String StrGbk=mole.io.filex.InputStreamToString(pStream, "GBK");
InputStream isUTF8=mole.io.filex.StringToInputStream(StrGbk, "UTF-8");

这段代码需要加在XmlRpcStreamTransport.java的readResponse()方法这里...虽然JAR包里也有此类,但源码里边的优先级更高,会加载源码中的此类。。

paip.解决Invalid byte 2 of 2-byte UTF-8 sequence.相关推荐

  1. 解决'utf-8' codec can't decode byte 0xf1 in position 9: invalid continuation byte的问题

    ** 解决'utf-8' codec can't decode byte 0xf1 in position 9: invalid continuation byte的问题 ** pytorch下运行E ...

  2. 成功解决UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xba in position 2: illegal multibyte sequence

    成功解决UnicodeDecodeError: 'gbk' codec can't decode byte 0xba in position 2: illegal multibyte sequence ...

  3. 解决UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xa7 in position 85: illegal multibyte sequence

    解决UnicodeDecodeError: 'gbk' codec can't decode byte 0xa7 in position 85: illegal multibyte sequence ...

  4. 解决UnicodeDecodeError: 'gbk' codec can't decode byte 0xaa in position 212: illegal multibyte sequence

    问题: 在cmd命令行输入python后报错: UnicodeDecodeError: 'gbk' codec can't decode byte 0xaa in position 212: ille ...

  5. ‘gbk‘ codec can‘t decode byte 0xad in position 2: illegal multibyte sequence 错误的解决方法

    UnicodeDecodeError: 'gbk' codec can't decode byte 0xad in position 2: illegal multibyte sequence 翻译: ...

  6. 解决UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x84 in position 285: illegal multibyte sequence

    解决报错UnicodeDecodeError: 'gbk' codec can't decode byte 0x84 in position 285: illegal multibyte sequen ...

  7. ‘gbk‘ codec can‘t decode byte 0x80 in position 309: illegal multibyte sequence的两种解决方法

    UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 309: illegal multibyte sequence 两 ...

  8. python中txt文件读取错误原因以及解决办法‘gbk‘ codec can‘t decode byte 0x80 in position 2: illegal multibyte sequence

    python的读写文件操作时,有时候会出现一些小问题,详细如下,(原因在前面,解决办法在文末). 读取txt文件时出现错误反馈如下: Traceback (most recent call last) ...

  9. 解决UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x80 in position 0: illegal multibyte sequence问题

    1.解决Python报错UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 658: illegal multibyt ...

  10. 报错及解决 ‘gbk‘ codec can‘t decode byte 0x80 和raise ImportError(‘Failed to initialize: {0}‘.format(exc)

    在使用GitPython包准备爬git文件遇到了好多问题,现记录下解决方案 情况1 File "D:\Anaconda\lib\subprocess.py", line 1238, ...

最新文章

  1. 实现通用人工智能还要多久?Hinton与AlphaGo之父这样回答
  2. eclipse代码模版里设置模版快捷键
  3. java中的boolean_java中boolean的用法
  4. C++实现冒泡排序(附完整源码)
  5. c语言转汇编语言 vs,C语言转换成汇编语言
  6. 对于一个字符串,请设计一个高效算法,找到第一次重复出现的字符
  7. 美剧 《圣经故事》 故事线
  8. css布局模型详细介绍
  9. iPhone开发经典语录
  10. 手机 — oppo手机录音放在哪个文件夹里
  11. 利用Python批量修改多个ass字幕文件
  12. 我国iPS细胞事业支援促进委员会成立
  13. imazing iOS设备管理软件
  14. 服务器主板硬盘接口数量,主板上的硬盘插槽最多有几个?
  15. 网络安全知识竞赛选择题(121-160题)
  16. 基于科大讯飞AIUI平台自定义语义库的开发
  17. XML考试题库大全(附答案)
  18. java中隐函数求导法则_隐函数求导的三种方法
  19. 程序员双节假期如何小赚一笔?
  20. 小米联合金山云发布“1KM边缘计算” 携手布局“云+边缘”新赛道

热门文章

  1. 大数据-05-Spark之读写HBase数据
  2. 引言:扇贝 2017 服务端技术回顾
  3. openstack-O版-glance安装
  4. XSS绕过与防御总结
  5. 开放API接口 笑话、天气、新闻 1
  6. 给所有准备考网络工程师的考生的一点点建议
  7. 男人想要成功--必须明白的22个道理
  8. JavaScript数组实现图片轮播
  9. nginx的学习笔记,第四记。
  10. chmod与chown