编码转换
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;
}
}

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