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); }