1. 程式人生 > 其它 >EasyCVR視訊廣場左側通道列表顯示亂碼是什麼原因?

EasyCVR視訊廣場左側通道列表顯示亂碼是什麼原因?

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介面的物件儲存服務,簡單配置,部署更高效。如有需求,歡迎瞭解。