本地测试正常, Tomcat : 1 字节的 UTF-8 序列的字节 1 无效

Phil_Jing 2017-06-30 03:35:50
com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: 1 字节的 UTF-8 序列的字节 1 无效。

	public static SortedMap<Object, Object> parseXmlToSortedMap(String xml)
throws ParserConfigurationException, IOException, SAXException {
// 这里用Dom的方式解析回包的最主要目的是防止API新增回包字段
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
InputStream is = HttpRequestUtil.getStringStream(xml);(字符串转inputstream)
org.w3c.dom.Document document = builder.parse(is);
// 获取到document里面的全部结点
org.w3c.dom.NodeList allNodes = document.getFirstChild().getChildNodes();
org.w3c.dom.Node node;
SortedMap<Object, Object> map = new TreeMap<Object, Object>();
int i = 0;
while (i < allNodes.getLength()) {
node = allNodes.item(i);
if (node instanceof org.w3c.dom.Element) {
map.put(node.getNodeName(), node.getTextContent());
}
i++;
}
return map;
}


如果微信的xml没有中文,本地服务器可以正常运行;
如果微信的xml有中文,本地正常运行,服务器不可以(出错在org.w3c.dom.Document document = builder.parse(is);这行)。
...全文
949 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Phil_Jing 2017-06-30
  • 打赏
  • 举报
回复
引用 2 楼 zhou2015bo 的回复:
把xml的encoding属性值UTF-8改为UTF8,我操,太伤蛋了
按照楼上的成功了
Phil_Jing 2017-06-30
  • 打赏
  • 举报
回复
引用 1 楼 minemine0418 的回复:
把输入流 UTF-8转码试试
这个成功了
minemine0418 2017-06-30
  • 打赏
  • 举报
回复
直接URLDecoder.decode(xml, HTTP.UTF_8);试试
云墨浅殇 2017-06-30
  • 打赏
  • 举报
回复 1
把xml的encoding属性值UTF-8改为UTF8,我操,太伤蛋了
minemine0418 2017-06-30
  • 打赏
  • 举报
回复
把输入流 UTF-8转码试试

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧