halcon二維碼中文亂碼問題解決


halcon掃描二維碼若出現中文會有中文亂碼問題,在halcon中給出方案是

set_system ('filename_encoding', 'utf8')

通過實驗發現設置為utf8后,顯示控件會出現報錯無法new出來,

自己通過分析后在c#中halcon將utf8碼的中文直接按照gb2312給解碼出來,當然就亂碼了,逆向解碼再用utf8轉為中文就可以得到正確文字,以下是轉碼代碼

        /// <summary>
        /// 判斷字符串中是否包含中文
        /// </summary>
        /// <param name="str">需要判斷的字符串</param>
        /// <returns>判斷結果</returns>
        public static bool HasChinese(string str)
        {
            return Regex.IsMatch(str, @"[\u4e00-\u9fa5]");
        }
        /// <summary>
        /// utf8文字用gb2312格式顯示時候亂碼,需要轉換為gb2312
        /// </summary>
        /// <param name="text"></param>
        /// <returns></returns>
        public static string Gb2312Correct(string text)
        {
            if (HasChinese(text)==false)
            {
                return text;
            }
            //聲明字符集   
            System.Text.Encoding utf8, gb2312;
            //utf8   
            utf8 = System.Text.Encoding.GetEncoding("utf-8");
            //gb2312   
            gb2312 = System.Text.Encoding.GetEncoding("gb2312");
            byte[] gb;
            gb = gb2312.GetBytes(text);
            gb = System.Text.Encoding.Convert(utf8, gb2312, gb);
            //返回轉換后的字符   
            return gb2312.GetString(gb);
        }    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM