微信post xml 消息编码问题
site:mp.weixin.qq.com utf
微信卡券接口说明 - 微信公众平台开发者文档
所有API接口POST的数据只支持utf8编码,否则会返回报错。
以上是获取的部分信息
这个尽管有点模糊,只针对卡卷接口,但也能提供线索。
分析文本消息
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1348831860</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[this is a test]]></Content>
<MsgId>1234567890123456</MsgId>
</xml>
假设Content中的内容是utf-8编码的文本,<![CDATA[]]> 保证原样输出
具体例子:
<xml><ToUserName><![CDATA[gh_3440a78298be]]></ToUserName>
<FromUserName><![CDATA[ojpoHwQJaUYXOsKJTgeE4_yHwpZM]]></FromUserName>
<CreateTime>1469182663</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[你敢]]></Content>
<MsgId>6310091489858779233</MsgId>
</xml>
通过 HttpServletRequest 获取到 inputstream
通过read() 方法获取到整个流
byte[] bArray = {60,120,109,108,62,60,84,111,85,115,101,114,78,97,109,101,62,60,33,91,67,68,65,84,65,91,103,104,95,51,52,52,48,97,55,56,50,57,56,98,101,93,93,62,60,47,84,111,85,115,101,114,78,97,109,101,62,10,60,70,114,111,109,85,115,101,114,78,97,109,101,62,60,33,91,67,68,65,84,65,91,111,106,112,111,72,119,81,74,97,85,89,88,79,115,75,74,84,103,101,69,52,95,121,72,119,112,90,77,93,93,62,60,47,70,114,111,109,85,115,101,114,78,97,109,101,62,10,60,67,114,101,97,116,101,84,105,109,101,62,49,52,54,57,49,56,50,54,54,51,60,47,67,114,101,97,116,101,84,105,109,101,62,10,60,77,115,103,84,121,112,101,62,60,33,91,67,68,65,84,65,91,116,101,120,116,93,93,62,60,47,77,115,103,84,121,112,101,62,10,60,67,111,110,116,101,110,116,62,60,33,91,67,68,65,84,65,91,(byte) 228,(byte) 189,(byte) 160,(byte) 230,(byte) 149,(byte) 162,93,93,62,60,47,67,111,110,116,101,110,116,62,10,60,77,115,103,73,100,62,54,51,49,48,48,57,49,52,56,57,56,53,56,55,55,57,50,51,51,60,47,77,115,103,73,100,62,10,60,47,120,109,108,62};
试验各种编码
new String(bArray,"utf-8");
获取到原始文本
由此可知,该流是utf-8编码
设置 HttpServletResponse 编码
response.setCharacterEncoding("utf-8");
这个必须设置,response 默认编码是ISO-8859-1
详情见 ServletResponse.class 注释
If no charset is specified, ISO-8859-1 will be used.
git@github.com:witaste/ergouzi.git
微信post xml 消息编码问题的更多相关文章
- 微信推送给服务器的XML消息解析-springmvc 解析xml数据流
微信推送给服务器的XML消息解析: 可以使用request.getInputStream(); 获取输入的消息流:但是需要自己解析流: spring mvc自带解析功能: controller中: @ ...
- 微信企业号接收消息(使用SpringMVC)
微信企业号接收消息(使用SpringMVC) 微信企业号接收消息(使用SpringMVC) 将应用设置在回调模式时,企业可以通过回调URL接收员工回复的消息,以及员工关注.点击菜单.上报地理位置等事件 ...
- Java开发微信公众号(四)---微信服务器post消息体的接收及消息的处理
在前几节文章中我们讲述了微信公众号环境的搭建.如何接入微信公众平台.以及微信服务器请求消息,响应消息,事件消息以及工具处理类的封装:接下来我们重点说一下-微信服务器post消息体的接收及消息的处理,这 ...
- Java开发微信公众号(三)---微信服务器请求消息,响应消息,事件消息以及工具处理类的封装
在前面几篇文章我们讲了微信公众号环境的配置 和微信公众号服务的接入,接下来我们来说一下微信服务器请求消息,响应消息以及事件消息的相关内容,首先我们来分析一下消息类型和返回xml格式及实体类的封装. ( ...
- 微信公众平台消息接口开发(24)图片识别之人脸识别API
微信公众平台开发模式 微信 公众平台 消息接口 开发模式 企业微信公众平台 图片识别 人脸识别 API 作者:方倍工作室 原文:http://www.cnblogs.com/txw1958/archi ...
- [玩转微信平台]XML的格式化- 如何去掉XML 文档头和命名空间
前言 系统要求能够回复微信用户发过来的文本消息.实现中使用的实体对象进行XML的序列化的方式来实现XML消息. 微信平台的回复例子 http://mp.weixin.qq.com/wiki/14/ ...
- 微信公众平台消息接口API指南
简介 微信公众平台消息接口为开发者提供了一种新的消息处理方式.微信公众平台消息接口为开发者提供与用户进行消息交互的能力.对于成功接入消息接口的微信公众账号,当用户发消息给公众号,微信公众平台服务器会使 ...
- WCF技术剖析之十九:深度剖析消息编码(Encoding)实现(下篇)
原文:WCF技术剖析之十九:深度剖析消息编码(Encoding)实现(下篇) [爱心链接:拯救一个25岁身患急性白血病的女孩[内有苏州电视台经济频道<天天山海经>为此录制的节目视频(苏州话 ...
- WCF扩展之实现ZeroMQ绑定和protocolBuffer消息编码(一)概要设计
在我工作的项目中含有多种操作系统.多种设备.多种开发语言,因此需要使用跨平台的通信技术和自定义的消息编码.经过技术调研,ZeroMQ+ProtocolBuffer最终成为通信技术和编码方式.但是如 ...
随机推荐
- 从底层谈WebGIS 原理设计与实现(一):开篇
从底层谈WebGIS 原理设计与实现(一):开篇 作者:naaoveGI… 文章来源:http://www.cnblogs.com/naaoveGIS/ 点击数:4773 更新时间: ...
- 将Ctrl+Alt+Delete键进行屏蔽,防止误操作重启服务器
[root@bgw-t ~]# vi /etc/init/control-alt-delete.conf #exec /sbin/shutdown -r now "Control-Alt- ...
- 获取tomcat源码
1.安装环境 工欲善其事必先利其器,在开始工作之前,先准备好环境和工具:jdk.eclipse.并配置eclipse的svn插件.ant,具体怎么配置就不说了,网上都有. 2.下载源码 打开eclip ...
- scala-- 内建控制结构
内建控制结构 scala 内建的控制结构很少,只有 if while for try match 和函数调用 几种. 因为scala 从语法层面支持函数字面量.几乎所有的scala控制结构都会产生 ...
- 吴裕雄 实战PYTHON编程(8)
import pandas as pd df = pd.DataFrame( {"林大明":[65,92,78,83,70], "陈聪明":[90,72,76, ...
- maven package install deploy
1.maven package:打包到本项目,一般是在项目target目录下. 如果a项目依赖于b项目,打包b项目时,只会打包到b项目下target下,编译a项目时就会报错,因为找不到所依赖的b项目, ...
- 了解大数据的特点、来源与数据呈现方式以及用Python写Mad Libs游戏
作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2620. 1.浏览2019春节各种大数据分析报告,例如: 这世间,再 ...
- 《Google软件测试之道》摘录
以下是最近看的一本书<Google软件测试之道>里的一些摘录,收获很多. 1.讨论测试开发比并没有什么意义,如果你是一名开发人员,同时也是一名测试人员,如果你的职位头衔上有测试的字样,你的 ...
- (转载)我的java问题排查工具单
原文地址:https://yq.aliyun.com/articles/69520 我的问题排查工具箱 前言 平时的工作中经常碰到很多疑难问题的处理,在解决问题的同时,有一些工具起到了相当大的作用,在 ...
- cron,at的权限控制
/etc/cron.deny存在 /etc/cron.deny不存在 /etc/cron.allow存在 只有/etc/cron.allow中列出的用户才能运行crontab -e:忽略/etc/ ...