编码转换与网址解码

-

编码转换

public string UTF8ToGB2312(string str)
        {
            
try
            {    
                Encoding utf8 
= Encoding.GetEncoding(65001);
                Encoding gb2312 
= Encoding.GetEncoding("gb2312");//Encoding.Default ,936
                byte[] temp = utf8.GetBytes(str);
                
byte[] temp1 = Encoding.Convert(utf8, gb2312, temp);
                
string result = gb2312.GetString(temp1); 
                
return result;
            }
            
catch  (Exception ex)//(UnsupportedEncodingException ex)
            {
                MessageBox.Show(ex.ToString());
                
return null
            }
        }

网址解码子

Encoding en = Encoding.UTF8;
            
byte[] bytes = null;
            
char[] chars = null;
            
string rs;
            
string value = item.Value;
            value 
= "C%23%E5%A6%82%E4%BD%95%E7%BC%96%E7%A0%81%E5%AD%97%E7%AC%A6%E4%B8%B2";
            
string[] ss = value.Split(new string[] { "%" }, StringSplitOptions.RemoveEmptyEntries);
            List
<byte> lb = new List<byte>();
            
            
for (int i = 0; i < ss.Length; i++)
            {
                
if (ss[i].Length == 1)
                {
                    lb.AddRange(en.GetBytes(ss[i]));
                }
                
else if (ss[i].Length == 2)
                {
                    lb.Add(
byte.Parse(ss[i], NumberStyles.AllowHexSpecifier));
                }
                
else
                {
                    lb.AddRange(en.GetBytes(ss[i].Substring(
2, ss[i].Length - 2)));
                }
            }
            bytes 
= new byte[lb.Count];
            lb.CopyTo(bytes);
            
//chars = new char[en.GetCharCount(bytes, 0, bytes.Length)];
            
//en.GetChars(bytes, 0, bytes.Length, chars, 0);
            
//rs = new string(chars);
            rs = en.GetString(bytes);

其实可以只用一句话:

rs = HttpUtility.UrlDecode(value);
原文地址:https://www.cnblogs.com/wudingfeng/p/1344985.html