新手问题 微信,菜单,json,编码问题

as181920 · 2013年10月20日 · 最后由 as181920 回复于 2013年11月07日 · 8139 次阅读

微信的自定义菜单的接口要的是 json 格式数据,但是每次 post 过去只要是中文就报(英文都正常): {"errcode":40033,"errmsg":"invalid charset. please check your request, if include \uxxxx will create fail!"} 没找到怎么处理,有经验的给个解决建议?

详细: 微信接口说明:http://mp.weixin.qq.com/wiki/index.php?title=%E8%87%AA%E5%AE%9A%E4%B9%89%E8%8F%9C%E5%8D%95%E6%8E%A5%E5%8F%A3

接口代码: res = HTTParty.post "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=#access_token}{", body: @ui_menu_json, headers: {'ContentType' => 'application/json'}

其中@ui_menu_json是 Jbuilder gem 生成。其实遇到“中文”.to_json 这种、\uxxx 结果的文字,同步的时候都会报错,不知道什么缘故。

不懂 ruby,但是随便一搜,貌似 HTTParty 的 post body 会 encode json content。 所以多半是那个啥中文被这个 HTTParty 给转成了 \uxxxx 格式了。

不要转,直接把写 json format 的字符串,塞到 request 里去,虽然在网页上看到的结果会是乱码,但是微信菜单却是好的。

长话短说,3.2.12 不想打 patch,升级到 3.2.13 就好 或

{a: "中文"}.to_json.gsub!(/\\u([0-9a-z]{4})/) {|s| [$1.to_i(16)].pack("U")

https://gist.github.com/jhjguxin/6240586

需要 登录 后方可回复, 如果你还没有账号请 注册新账号