GatewayWorker 编码问题

onenine

问题描述

客户端是硬件设备,要求ws通信编码为GBK,如何将GatewayWorkerGatewayClient编码设置成GBK?

为此你搜索到了哪些方案及不适用的原因

  1. GatewayClient通信数据转为GBK
    尝试json_encode之前将汉字转为GBK,结果是乱码。
    尝试json_encode之后整体转为GBK,结果是乱码。

  2. 尝试使用 https://www.workerman.net/q/3576 方案
    尝试后继续乱码

591 3 0
3个回答

latin
json_encode(mixed $value)

value
待编码的 value ,除了 资源(resource) 类型之外,可以为任何数据类型。

所有字符串数据的编码必须是 UTF-8。

json不支持gbk,必须是utf8
https://www.php.net/json_encode

  • onenine 2023-02-28

    用iconv将utf-8格式转成gb2312后,再用urlencode转码一下就可以使用json_encode压缩了。然后再urldecode解码。
    这样解决了json_encode只支持utf8的问题,但是提交给GatewayWorker的时候,GatewayWorker是按照utf8处理的,导致中文乱码。

2494911084@qq.com

json_encode前把gbk转为utf-8

  • onenine 2023-02-28

    我是需要按照gbk传递,原本编码是utf8

$val = iconv("UTF-8", "gb2312//IGNORE", $val);
Gateway::sendToUid($client_id, $val);
  • 暂无评论
年代过于久远,无法发表回答
🔝