C# 实现Escape UnEscape方法(支持中文-转载)

时间:2019-06-26 19:52:21   收藏:0   阅读:164
//Escape方法
        public static 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();

        }
        //UnEscape方法
        public static 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;

        }

 

原文:https://www.cnblogs.com/zhaogaojian/p/11093195.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!