编码转换
来源:互联网 发布:排序算法java 编辑:程序博客网 时间:2024/05/01 02:39
static string UNICODE_ToChinese(string content) { string GBK_Code = ""; string GBK_Value = ""; try { string pattern = @"\\u([A-Fa-f0-9]{1,4})"; if (!Regex.IsMatch(content, pattern)) return content; MatchCollection collection = Regex.Matches(content, pattern); HashSet<string> hs = new HashSet<string>(); foreach (Match item in collection) { GBK_Code = item.Value; if (hs.Contains(GBK_Code)) continue; hs.Add(GBK_Code); GBK_Value = item.Groups[1].Value; string chinese = ((char)Convert.ToInt32(GBK_Value, 16)).ToString(); content = content.Replace(GBK_Code, chinese); } return content; } catch (Exception ex) { var t1 = GBK_Value; var t = GBK_Code; return ""; } } static string GBK_X_ToChinese(string content) { string GBK_Code = ""; string GBK_Value = ""; try { string pattern = @"&#x([\dA-Fa-f]{1,4});"; if (!Regex.IsMatch(content, pattern)) return content; MatchCollection collection = Regex.Matches(content, pattern); HashSet<string> hs = new HashSet<string>(); foreach (Match item in collection) { GBK_Code = item.Value; if (hs.Contains(GBK_Code)) continue; hs.Add(GBK_Code); GBK_Value = item.Groups[1].Value; string chinese = ((char)Convert.ToInt32(GBK_Value, 16)).ToString(); content = content.Replace(GBK_Code, chinese); } return content; } catch (Exception ex) { var t1 = GBK_Value; var t = GBK_Code; return ""; } } static string GBKToChinese(string content) { string GBK_Code = ""; string GBK_Value = ""; try { string pattern = "&#(\\d{1,4});"; if (!Regex.IsMatch(content, pattern)) return content; MatchCollection collection = Regex.Matches(content, pattern); HashSet<string> hs = new HashSet<string>(); foreach (Match item in collection) { GBK_Code = item.Value; if (hs.Contains(GBK_Code)) continue; hs.Add(GBK_Code); GBK_Value = item.Groups[1].Value; string chinese = ((char)Convert.ToInt32(GBK_Value, 10)).ToString(); content = content.Replace(GBK_Code, chinese); } return content; } catch (Exception ex) { var t1 = GBK_Value; var t = GBK_Code; return ""; } }
private static string conventString(string str) { StringBuilder sb = new StringBuilder(); foreach (char c in str) sb.AppendFormat("\\u{0}", Convert.ToString((int)c, 16).PadLeft(4,'0')); return sb.ToString(); }
备注:PadLeft(4,'0')不足4位以0补其,很重要