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);
        }    
专注机器视觉,halcon c# c++联合开发
原文地址:https://www.cnblogs.com/linyugang/p/9138989.html