TSINGSEE青犀视频云边端架构产品在接入多级通道时,在视频广场侧边栏都会显示分栏菜单,目的是为了让通道的区分更加清晰。近期我们在测试EasyCVR项目时,发现视频广场列表出现乱码现象。
由于我们首次碰到这样的问题,经验并不是很多,所以只能从乱码的二进制信息来进行排查。首先把乱码这些二进制信息输出到文件,进行分析:
整理这些二进制信息来使代码进行批量处理,整理得出以下数据:
用代码来批量读取文件,已“\r\n”和“,”风格,在把字符串转成数字,并存在缓存中。
此时我们就已经拿到了所有的二进制数据,可以看到出现乱码的情况因为有的是GBK、有的是UTF8,如果是UTF8直接反馈在页面显示是没有问题的,但是GBK就会有问题。这是因为UTF8是三个字节一个汉字,而GBK是二个字节一个函数,这是最大的区别。
此外还有一个原因,即go目前只支持UTF8,所以处理GBK需要安装go的第三方库“simplifiedchinese”,在使用go自带的方法“utf8.Valid”来判断是否是UTF8还是GBK。UTF8是三个字节一个汉字,所以还要判断该buffer的长度否则就是GBK。
以上分析完成,在分析buffer的时候后面有还多的0x00。
把0x00干扰的数据给清除,防止误判断。使用代码截取。
完整的go代码转换格式:
此时即可解决侧边栏通道乱码的问题了。EasyCVR视频安防云服务支持传统网络摄像机、NVR、编码器、SDK等设备,最大程度的提高了硬件设备的兼容性,并且可直接对接阿里云、腾讯云、华为云、七牛云等,支持S3和Swift接口的对象存储服务,简单配置,部署更高效。如有需求,欢迎了解。