环境信息
问题描述
设备上传的hex字节数据通过规则引擎转发到web服务器,但是web这边拿到的字节数据有乱码的问题,如果字节数据超过了128,就会乱码。我在规则引擎配置接口的时候把编码指定为iso-8859-1,后还是有问题。我怀疑是规则引擎发送数据之前已经把payload按照某种编码已经编过码了。我希望web这边能直接接收byte数组,该如何操作呢
配置文件及日志
规则引擎是 SELECT * FROM “notify/#”
发送数据
收到数据
我希望能直接拿到字节数组,而不是字符串的payload
规则引擎中的头并不能影响实际的编码规则,我们更多是把头部规则当作数据传输的形式而非 http 的影响因素。这里 emqx 需要进行 json encode 就会产生字符集编码的问题。我们更推荐使用其他的消息推送方式(比如 infludb mysql 等数据入库)避免产生这种问题。你也可以尝试 exhook 的方式,看能不能解决。
可不可以不用json encode呢 ,或者json encode的编码方式能不能修改,现在固定是utf-8吗。
我看其他问答里面 bin2hexstr(payload) as hexstr 用这种方式转成字符串也可以 ,有没有类似的方法转成字节数组的呢?
bin2hexstr(payload) as hexstr
的方式需要你解码。字节数组最终都会被编码的,因为 http 是明文协议,所以都要被编码处理掉。