2018-01-05 18:31:44 qq_24172609 阅读数 3047
  • 微信公众平台开发4-消息管理-微信开发php

    微信公众平台开发之消息管理是子恒老师《微信公众平台开发》视频教程的第4部。详细讲解了用php开发微信,对微信公众平台中的消息管理开发。内容包含微信关键字回复,多图文消息回复开发,接收图片消息,视频,小视频消息等等。欢迎反馈,微信/QQ:68183131

    6328 人正在学习 去看看 秦子恒

  最近开发微信服务号,遇到了一个问题,在编写自动回复消息的时候出现乱码,最后发现问题是由于spring mvc的@ResponseBody注解返回字符串时默认返回的是“ISO-8859-1”而不是utf-8。

  虽然大家的项目里面可能都有字符编码过滤器,但是有一个问题在这里,我们设置response.setContentType("text/html; charset=utf-8");时都是在chain.doFilter(request, response);之前设置的,也就是过滤器前处理是设置的响应编码格式,之所以不在后处理时设置是因为后处理时响应内容已经生成此时设置是无效的,必须在响应内容生成之前设置响应编码格式。

  那么问题就出在这个地方,我们虽然设置了响应编码格式,,,可是spring mvc在有@ResponseBody注解的响应是,篡改了我们的响应编码!!!!!!!!!为什么会这样。。。。。我们来剖析一下原因。
  相信大家对spring的Message Converters不会陌生,HttpMessageConverters<T>这个接口是用来把请求信息转化为对象T,把T输出为响应信息的一个接口,在该接口众多的实现类中有一个实现类StringHttpMessageConverter,这个类的作用就是把请求信息转换未字符串,而@ResponseBody注解就是默认调用的这个类,,,而这个类中默认的编码格式就是ISO-8859-1,,所以罪魁祸首找到了,怎么改呢?

我直接添加了

@RequestMapping(value = "/weixin/validation" , method = RequestMethod.POST , produces = "text/html;charset=UTF-8")
这样一个注释在控制器上,
 /**
  * 注意:
	 * "application/json" json格式数据
	 * "application/xml" xml类型数据
	 * "application/x-www-form-urlencoded" 基本类型  jquery默认就是采用的这种
	 * "multipart/form-data" 文件上传
	 * "text/xml"  和application/xml采用的默认编码格式不一样
	 * "text/html"  一般的html
	 */
主要就是
produces = "text/html;charset=UTF-8"
这个配置当然还有很多别的方式,网上也有很多,我没有都尝试,这里把一些链接留下:

Spring MVC @ResponseBody响应中文乱码

Spring MVC @ResponseBody注解返回响应流时中文乱码问题的解决




2014-09-03 22:03:22 Primary_wind 阅读数 9506
  • 微信公众平台开发4-消息管理-微信开发php

    微信公众平台开发之消息管理是子恒老师《微信公众平台开发》视频教程的第4部。详细讲解了用php开发微信,对微信公众平台中的消息管理开发。内容包含微信关键字回复,多图文消息回复开发,接收图片消息,视频,小视频消息等等。欢迎反馈,微信/QQ:68183131

    6328 人正在学习 去看看 秦子恒

一开始我也纠结了这个问题很久,从微信公众平台上下载下来的例子不是utf-8格式的,但是却可以验证通过。

此时修改加入中文,返回消息会乱码,改成utf-8编码就显示正常了。

再来验证会不通过。

我一直纠结这个问题,其实没必要,只要第一次验证通过即可,后面修改成utf-8编码也不影响公众平台与服务号交互

2017-11-06 21:00:00 chyin1024 阅读数 102
  • 微信公众平台开发4-消息管理-微信开发php

    微信公众平台开发之消息管理是子恒老师《微信公众平台开发》视频教程的第4部。详细讲解了用php开发微信,对微信公众平台中的消息管理开发。内容包含微信关键字回复,多图文消息回复开发,接收图片消息,视频,小视频消息等等。欢迎反馈,微信/QQ:68183131

    6328 人正在学习 去看看 秦子恒
流程简述:
用户发送信息给腾讯微信服务器,
腾讯微信服务器通过我们在公众号中设置的处理文件(wechat.php),
在这个wechat.php 中的逻辑跳转到相关的处理模块,
逻辑模块将结果返回给微信服务器,
腾讯微信服务器将结果返回给用户



微信回复,中文乱码:

php 解决json_encode中文UNICODE转码问题
http://blog.csdn.net/bjash/article/details/9834497
echo json_encode("中文", JSON_UNESCAPED_UNICODE);


2018-11-21 23:24:41 pei_fang 阅读数 320
  • 微信公众平台开发4-消息管理-微信开发php

    微信公众平台开发之消息管理是子恒老师《微信公众平台开发》视频教程的第4部。详细讲解了用php开发微信,对微信公众平台中的消息管理开发。内容包含微信关键字回复,多图文消息回复开发,接收图片消息,视频,小视频消息等等。欢迎反馈,微信/QQ:68183131

    6328 人正在学习 去看看 秦子恒

情况如下:

设置响应文本的内容是中文,打印到控制台检测后中文正常显示,但是在公众号上文本内容是乱码。

问题原因:

post请求,设置返回类型为String,用return 返回XML字符串,微信无法正常解析?

设置返回类型void,也就是不返回,用响应输出数据

response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
String parseXml = wechatService.processRequest(request);
out.print(parseXml);

解决问题。

总结:

不能用return返回带中文数据(文本内容是英文没问题),用response返回中文数据。

2017-04-20 14:16:46 hao474798383 阅读数 124
  • 微信公众平台开发4-消息管理-微信开发php

    微信公众平台开发之消息管理是子恒老师《微信公众平台开发》视频教程的第4部。详细讲解了用php开发微信,对微信公众平台中的消息管理开发。内容包含微信关键字回复,多图文消息回复开发,接收图片消息,视频,小视频消息等等。欢迎反馈,微信/QQ:68183131

    6328 人正在学习 去看看 秦子恒

1.菜单配置只支持全量覆盖,而每个按钮都可以设置key值,当用户点击key值的时候,微信服务器会把key值传给服务商接口,接口根据key值给用户对应的响应

2.被动回复消息,必须用response来write出去,并且要设置上下文类型为:text/plain;charset=UTF-8,否则会乱码

3.微信公众号平台都是基于token机制,用appid与secret来换取token,使用token与对应的openid来获取一系列的数据

4.token是有获取上限的,最好保存在内存中,没隔一段时间,用服务去刷新这个token

5.关于被动回复消息功能,只允许回复一条文字信息,图文消息最多10条,第一条为大图文消息,如果想回复多条文字消息或图文信息,推荐使用客服接口(客服接口支持json数据)

6.如果需要调起微信摄像头,则必须要先初始化config 。 在wx.ready中去回调所有微信接口函数,而且必须要在config中配置加入该接口名(jsApiList)

wx.config({
        debug : false, 
        appId     : $.ckCache.getCache("appId"), // 必填,公众号的唯一标识
        timestamp : $.ckCache.getCache("timestamp"), // 必填,生成签名的时间戳
        nonceStr  : $.ckCache.getCache("nonceStr"), // 必填,生成签名的随机串
        signature : $.ckCache.getCache("signature"),// 必填,签名,见附录1
        jsApiList :['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareQZone','onMenuShareWeibo','scanQRCode']
});
没有更多推荐了,返回首页