商品名称使用的是 emoji,存入到数据库是 utf8mb4 格式。使用该格式商品调用微信预支付订单报错: array ( 'return_code' => 'FAIL', 'return_msg' => 'body 不是 UTF8 编码', ) 请问有人知道如何解决吗?
1
honkew Mar 6, 2018
emoji 会丢失吧
|
2
avalon0624 Mar 6, 2018
之前的做法是:
将 emoji 转换成字符,存入库中,你可以去搜下,有现成的 |
3
callme OP @avalon0624 我们是把该数据库中的字段设置为 utf8mb4 格式来保存的
|
5
qiyuey Mar 6, 2018
微信这个设计感觉不太合理
|
6
colordog Mar 6, 2018 via iPhone
我想知道支付 post 信息怎么会带 emoji 呢
|
7
winglight2016 Mar 6, 2018
自己把商品名称 encode 一下再传给微信,传回来的时候 decode 一下,以上
|
9
mYYnSmiTEQWcCwAr Mar 7, 2018
写个 filter_emoji 正则替换一下 把 emoji 删了不就行了嘛。。。
def filter_emoji(desstr,restr='emoji'): try: co = re.compile(u'[\U00010000-\U0010ffff]') except re.error: co = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]') return co.sub(restr, desstr) |
10
zjsxwc Mar 7, 2018
这么处理下就好了,微信标题长度好像也有限制的
$title = mb_substr($title, 0, 10); $title = preg_replace('/[[:^print:]]/', '', $title); |