xml:Invalid byte 2 of 2-byte UTF-8 sequence

xml解析报错:Invalid byte 2 of 2-byte UTF-8 sequence

在做接口解析时候出现的错误:Invalid byte 2 of 2-byte UTF-8 sequence. Nested exception: Invalid byte 2 of 2-byte UTF-8 sequence.

非常明显是在读取XML文件时候出现的编码问题!

在測试过程中发现,主要原因是xml文件里声明的编码与xml文件本身保存时的编码不一致。

如今解决的办法就有几个,主要说我測试过的两个方。

假设你是直接以文件的形式读取 能够更改XML文件里的 UTF-8编码 改为 GBK或GB2312 .

另一种可能是 你直接以URL 通过网络地址获取InputStream流形式读取 在转换成Document对象。这样的方法的解决的方法是先down 下来保存在本地。

实现比較简单 用个OutputStream流写到你想保存的文件夹就可以。

再解析down下来的文件 当中在 SAXReader saxReader = new SAXReader();

正常写法:

private ImpowerDeviceVo getResponseXml(String requestUrl, String requestXml) throws Exception

{

if (StringUtils.isEmpty(requestUrl))

{

String message = "config-WebPortal.xml配置文件未配置,获取接口连接为空!";

logger.debug(message);

logger.error(message);

}

URL httpurl = new URL(requestUrl);

HttpURLConnection httpConn = (HttpURLConnection) httpurl.openConnection();

httpConn.setConnectTimeout(ImpowerXmlNodeName.connectTimeout);

httpConn.setReadTimeout(ImpowerXmlNodeName.readTimeout);

httpConn.setRequestMethod(ImpowerXmlNodeName.requestMethod);

httpConn.setDoInput(true);

// 将doOutput标志设置为true,指示应用程序要将数据写入URL连接。

httpConn.setDoOutput(true);

OutputStream out = httpConn.getOutputStream();

logger.debug("requestXml:" + requestXml);

// 将參数写入URL接口连接

out.write(requestXml.getBytes("utf-8"));

SAXBuilder sax = new SAXBuilder();

Document doc = sax.build(httpConn.getInputStream());

// 获取到信息

ImpowerDeviceVo impowerDeviceVo = this.getImpowerDeviceVoByDocument(doc);

httpConn.disconnect();

out.close();

return impowerDeviceVo;

}

改动方法例如以下:

造一个暂时文件保存所定的编码报文。然后读取,读取解析后关闭流。再删除文件,否则会报文件读取多误 read error

private ImpowerDeviceVo getResponseXml(String requestUrl, String requestXml) throws Exception

{

if (StringUtils.isEmpty(requestUrl))

{

String message = "config-WebPortal.xml配置文件未配置,获取接口连接为空!";

logger.debug(message);

logger.error(message);

}

URL httpurl = new URL(requestUrl);

HttpURLConnection httpConn = (HttpURLConnection) httpurl.openConnection();

httpConn.setConnectTimeout(ImpowerXmlNodeName.connectTimeout);

httpConn.setReadTimeout(ImpowerXmlNodeName.readTimeout);

httpConn.setRequestMethod(ImpowerXmlNodeName.requestMethod);

httpConn.setDoInput(true);

// 将doOutput标志设置为true。指示应用程序要将数据写入URL连接。

httpConn.setDoOutput(true);

OutputStream out = httpConn.getOutputStream();

logger.debug("requestXml:" + requestXml);

// 将參数写入URL接口连接

out.write(requestXml.getBytes("utf-8"));

InputStream inputStream = httpConn.getInputStream();

String fileName = "tempxml.xml";

// 保存文件

File f = new File(fileName);

if (!f.exists())

{

f.createNewFile();

}

String xmlContent = readXmlStream(inputStream);

System.out.println("进入-----------"+xmlContent);

FileOutputStream fileOutputStream = new FileOutputStream(f);

fileOutputStream.write(xmlContent.getBytes("utf-8"));

fileOutputStream.close();

// 打开文件

f = new File(fileName);

FileInputStream fileInputStream = new FileInputStream(f);

SAXBuilder sax = new SAXBuilder();

//  Document doc = sax.build(httpConn.getInputStream());

Document doc = sax.build(fileInputStream);

// 获取到信息

ImpowerDeviceVo impowerDeviceVo = this.getImpowerDeviceVoByDocument(doc);

httpConn.disconnect();

out.close();

fileInputStream.close();

f.delete();

return impowerDeviceVo;

}

时间: 2024-10-12 04:02:18

xml:Invalid byte 2 of 2-byte UTF-8 sequence的相关文章

使用Python遇到:'utf-8' codec can't decode byte 0x8b in position 1: invalid start byte 问题

查看你的HTTP头部是否有如下头部信息:"Accept-Encoding": "gzip, deflate" 这条信息代表本地可以接收压缩格式的数据,而服务器在处理时就将大文件压缩再发回客户端,IE在接收完成后在本地对这个文件又进行了解压操作.出错的原因是因为你的程序没有解压这个文件,所以删掉这行就不会出现问题了 参考文档 http://www.cnblogs.com/xiaochun365/p/6267339.html 使用Python遇到:'utf-8' cod

当在命令行中执行virtualenv venv时报此错误:'utf-8' codec can't decode byte 0xd5 in position 38: invalid continuation by

1.windows中安装虚拟环境virtualenv时, 当在命令行中执行virtualenv venv时报此错误:'utf-8' codec can't decode byte 0xd5 in position 38: invalid continuation by 可以参考以下方法: 可以按照以下路径(此路径按照你电脑上的路径查找)找到virtualenv.py文件 找到virtualenv.py文件选择适合的打开方式,找到以下代码段,把解码格式改成‘gbk’,并保存. 当在命令行中执行vi

python读取mat文件:'utf-8' codec can't decode byte 0xb3 in position 38: invalid start byte

matlab保存文件格式: matlab中,“预设”,“常规”,“MAT文件”,选择第一项在保存即可. python读取mat文件:'utf-8' codec can't decode byte 0xb3 in position 38: invalid start byte 原文地址:https://www.cnblogs.com/ly123456/p/12259565.html

json.dumps错误:'utf8' codec can't decode byte解决方案

一次在使用json.dumps()过程中,出现错误提示: ERROR:"UnicodeDecodeError: 'utf8' codec can't decode byte 0xe1 in position 5: unexpected end of data" 通过错误提示我们知道,肯定是编码问题,找到问题所在,就不难解决了... 正常情况: 1 2 3 4 5 6 7 #引入json模块 import json #定义一个字典 dit = {'a':111,'b':222,'c':3

【Error】Python:ascii codec can't decode byte 0xe8 in position 0:ordinal not in range(128)

最近编写Python程序时经常遇见中文相关的问题,这里说一个问题的解决方法. 我在使用json模块的dumps()函数时,因为涉及到中文,报出如下错误: ascii codec can't decode byte 0xe8 in position 0:ordinal not in range(128) 这是编码相关的问题,在该程序中加入如下代码: import sys reload(sys) sys.setdefaultencoding('utf-8') 这样就可以解决该问题了,希望对大家有所帮

python 读取文件时报错: UnicodeDecodeError: 'gbk' codec can't decode byte 0xa4 in position 127: illegal multibyte sequence

UnicodeDecodeError: 'gbk' codec can't decode byte 0xa4 in position 127: illegal multibyte sequence python读取文件时提示UnicodeDecodeError: 'gbk' codec can't decode byte 0xa4 in position 127: illegal multibyte sequence 解决办法: FILE_OBJECT= open('order.log','r'

Python读取CSV文件,报错:UnicodeDecodeError: 'gbk' codec can't decode byte 0xa7 in position 727: illegal multibyte sequence

Python读取CSV文件,报错:UnicodeDecodeError: 'gbk' codec can't decode byte 0xa7 in position 727: illegal multibyte sequence 解决办法: 在语句open(sFileName,newline='')中,增加encoding='UTF-8',如下: open(sFileName,newline='',encoding='UTF-8') Python读取CSV文件,报错:UnicodeDecode

[原创]java WEB学习笔记81:Hibernate学习之路--- 对象关系映射文件(.hbm.xml):hibernate-mapping 节点,class节点,id节点(主键生成策略),property节点

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

Line 23 in XML document from class path resource [spring-mvc.xml] is invalid; nested exception is org.xml.sax.SAXParseException:

今天在把自己的项目转为maven架构的时候,居然碰到了一个很奇葩的问题具体如下: org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 23 in XML document from class path resource [spring-mvc.xml] is invalid; nested exception is org.xml.sax.SAXParseException: cos-all-l