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