• c#unicode,中文互转


       /// <summary>
            /// 中文转unicode
            /// </summary>
            /// <returns></returns>
            public static string unicode_0(string str)
            {
                string outStr = "";
                if (!string.IsNullOrEmpty(str))
                {
                    for (int i = 0; i < str.Length; i++)
                    {
                        outStr += "/u" + ((int)str[i]).ToString("x");
                    }
                }
                return outStr;
            }
            /// <summary>
            /// unicode转中文
            /// </summary>
            /// <returns></returns>
            public static string unicode_1(string str)
            {
                string outStr = "";
                if (!string.IsNullOrEmpty(str))
                {
                    string[] strlist = str.Replace("/", "").Split('u');
                    try
                    {
                        for (int i = 1; i < strlist.Length; i++)
                        {
                            //将unicode字符转为10进制整数,然后转为char中文字符  
                            outStr += (char)int.Parse(strlist[i], System.Globalization.NumberStyles.HexNumber);
                        }
                    }
                    catch (FormatException ex)
                    {
                        outStr = ex.Message;
                    }
                }
                return outStr;
            }
    
    
            /// <summary>
            /// unicode转中文(符合js规则的)
            /// </summary>
            /// <returns></returns>
            public static string unicode_js_1(string str)
            {
                string outStr = "";
                Regex reg = new Regex(@"(?i)\u([0-9a-f]{4})");
                outStr = reg.Replace(str, delegate (Match m1)
                {
                    return ((char)Convert.ToInt32(m1.Groups[1].Value, 16)).ToString();
                });
                return outStr;
            }
            /// <summary>
            /// 中文转unicode(符合js规则的)
            /// </summary>
            /// <returns></returns>
            public static string unicode_js_0(string str)
            {
                string outStr = "";
                string a = "";
                if (!string.IsNullOrEmpty(str))
                {
                    for (int i = 0; i < str.Length; i++)
                    {
                        if (Regex.IsMatch(str[i].ToString(), @"[u4e00-u9fa5]")) { outStr += "\u" + ((int)str[i]).ToString("x"); }
                        else { outStr += str[i]; }
                    }
                }
                return outStr;
            }
            /// <summary>
            /// JS 编码 escape()
            /// </summary>
            /// <param name="s"></param>
            /// <returns></returns>
            private string Escape(string s)
            {
                StringBuilder sb = new StringBuilder();
                byte[] byteArr = System.Text.Encoding.Unicode.GetBytes(s);
    
                for (int i = 0; i < byteArr.Length; i += 2)
                {
                    sb.Append("%u");
                    sb.Append(byteArr[i + 1].ToString("X2"));//把字节转换为十六进制的字符串表现形式
                    sb.Append(byteArr[i].ToString("X2"));
                }
                return sb.ToString();
    
            }
            /// <summary>
            /// JS 编码 UnEscape()
            /// </summary>
            /// <param name="s"></param>
            /// <returns></returns>
            private string UnEscape(string s)
            {
    
                string str = s.Remove(0, 2);//删除最前面两个"%u"
                string[] strArr = str.Split(new string[] { "%u" }, StringSplitOptions.None);//以子字符串"%u"分隔
                byte[] byteArr = new byte[strArr.Length * 2];
                for (int i = 0, j = 0; i < strArr.Length; i++, j += 2)
                {
                    byteArr[j + 1] = Convert.ToByte(strArr[i].Substring(0, 2), 16);  //把十六进制形式的字串符串转换为二进制字节
                    byteArr[j] = Convert.ToByte(strArr[i].Substring(2, 2), 16);
                }
                str = System.Text.Encoding.Unicode.GetString(byteArr); //把字节转为unicode编码
                return str;
            }
  • 相关阅读:
    自学Java0711
    自学Java0710
    自学Java0709
    自学Java0708
    Leetcode刷题集
    网站收集
    674. 最长连续递增序列『简单』
    680. 验证回文字符串 Ⅱ『简单』
    686. 重复叠加字符串匹配『简单』
    693. 交替位二进制数『简单』
  • 原文地址:https://www.cnblogs.com/feizianquan/p/9720761.html
Copyright © 2020-2023  润新知