首页 > 学院 > 开发设计 > 正文

微信errcode":40033,菜单中出现中文就出错

2019-11-06 08:09:26
字体:
来源:转载
供稿:网友
{"errcode":40033,"errmsg":"invalid charset. please check your request, if include //uxxxx will create fail! hint: [fr3Pwa0673vr21]"}

菜单创建时带入了地址,但转义后会多出几个转折号,就会出现这种错误提示

{"button":[{"type":"click","name":"5555","value":"http:////www.tp-shop.cn//index.php//Mobile//","key":"home","sub_button":[]},{"type":"view","name":"TPshop/u5546/u57ce","value":"http:////www.tp-shop.cn//index.php//Mobile//"}]}

用PHP的json_encode来处理中文的时候,中文都会被编码,变成不可读的,类似”/u***”的格式 json_decode时把中文自动进行了unicode编码。 json_encode加上第二可选参数,

json_encode("中文", JSON_UNESCAPED_UNICODE);

这个只是针对php版本在5.4以上的,但我现在的环境是php5.3的

$jsonmenu = decodeUnicode( json_encode($menu_array));function decodeUnicode($str){ return PReg_replace_callback('/////u([0-9a-f]{4})/i', create_function( '$matches', 'return mb_convert_encoding(pack("H*", $matches[1]), "UTF-8", "UCS-2BE");' ), $str);}

php5.3版本测试可用

tips:查找资料中的先把name字段urlencode后再json_encode转成json格式后再urldecode,这个是没用的,这个可以解决url字段太长的微信错误提示


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表