PHP 微信自定义开发菜单使用 汉子 会报40033错误

本文介绍了解决PHP调用微信接口时遇到的汉字转义问题,通过使用json_encode函数的不同参数设置解决了请求中的字符集问题,并给出了具体示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

接口文档说明:
http://mp.weixin.qq.com/wiki/13/43de8269be54a0a6f64413e4dfa94f39.html

按照文档走,使用PHP执行,结果: {“errcode”:40033,”errmsg”:”invalid charset. please check your request, if include \uxxxx will create fail!”}

上网查询资料,结果显示:
如果php的版本在5.4+:
menu=jsonencode(menuStr, JSON_UNESCAPED_UNICODE);

否则:
menu=jsonencode(menuStr, JSON_UNESCAPED_UNICODE);
menu=urldecode(menu);

菜单中有中文的时候这样处理,不会转义汉字,也就不会报错了.

$menu = array(
            "button" => [
                [
                    "type" => "click",
                    "name" => "菜单一",
                    "key" => "V1001_TODAY_MUSIC"
                ],
                [
                    "type" => "click",
                    "name" => "菜单二",
                    "key" => "V1001_TODAY_SINGER"
                ],
                [
                    "name" => "111",
                    "sub_button" => [
                        [
                            "type" => "click",
                            "name" => "hello word",
                            "key" => "V1001_HELLO_WORLD"
                        ],
                        [
                            "type" => "click",
                            "name" => "11",
                            "key" => "V1001_GOOD"
                        ]
                    ]
                ]

            ]
        );

使用:json_encode($menu,JSON_UNESCAPED_UNICODE));
请求得到如下打印信息:(汉字保留)

string(278) "{"button":[{"type":"click","name":"菜单一","key":"V1001_TODAY_MUSIC"},{"type":"click","name":"菜单二","key":"V1001_TODAY_SINGER"},{"name":"111","sub_button":[{"type":"click","name":"hello word","key":"V1001_HELLO_WORLD"},{"type":"click","name":"11","key":"V1001_GOOD"}]}]}"

转载于:https://www.cnblogs.com/xingkong001/p/7253967.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值