C#编程之编码解码
1. C# Url编码解码 HttpUtility
编码时可以指定编码的,如
System.Web.HttpUtility.UrlEncode(str,System.Text.Encoding.Unicode);
System.Web.HttpUtility.UrlEncode(str,System.Text.Encoding.UTF8);
System.Web.HttpUtility.UrlEncode(str,System.Text.Encoding.GetEncoding( "GB2312 "));
解码也可以指定编码的
System.Web.HttpUtility.UrlDecode(str,System.Text.Encoding.Unicode);
System.Web.HttpUtility.UrlDecode(str,System.Text.Encoding.UTF8);
System.Web.HttpUtility.UrlDecode(str,System.Text.Encoding.GetEncoding( "GB2312 "));
2. Asp.Net后台Url编码解码 Server
HttpContext.Current.Server.UrlEncode
HttpContext.Current.Server.UrlDecode
3. C# Base64编码解码
string factString = "中华人民共和国";
//对字符串进行base64编码
byte[] buffer =Encoding.UTF8 .GetBytes(factString);
string Base64Str = Convert.ToBase64String(buffer);
//对字符串进行base64解码
byte[] buffer = Convert.FromBase64String(Base64Str);
string Encoding.UTF8.GetString(buffer);
或者:
UTF8Encoding utf8 = newUTF8Encoding();
Byte[] encodedBytes = utf8.GetBytes(content);
content = utf8.GetString(encodedBytes);
//编码
byte[] buffer = Encoding.Default.GetBytes(content);
content = Convert.ToBase64String(buffer);
//解码
byte[] buffer = Convert.FromBase64String(content);
content = Encoding.Default.GetString(buffer);
4.Unicode转码
C# Unicode转码
//(中文)转Unicode码
public string ToUnicode(string str)
{
string UniStr = "";
for (int i = 0; i < str.Length; i++)
{
string temp =str[i].ToString();
if (Regex.IsMatch(temp,"[\\u4E00-\\u9FA5\\uF900-\\uFA2D]+"))
{
temp = "&#x" + ((int)str[i]).ToString("X") + ";";
}
UniStr += temp;
}
return UniStr;
}
Js Unicode转码
str.replace(/[^\u0000-\u00FF]/g,function ($0) { return escape($0).replace(/(%u)(\w{4})/gi, "&#x$2;")})
5. GB和Unique编码互转
//GB2312转换成unicode编码
public string GB2Unicode(string str)
{
string Hexs = "";
string HH;
Encoding GB = Encoding.GetEncoding("GB2312");
Encoding unicode = Encoding.Unicode;
byte[] GBBytes = GB.GetBytes(str);
for (int i = 0; i < GBBytes.Length; i++)
{
HH = "%" + GBBytes.ToString("X");
Hexs += HH;
}
return Hexs;
}
//unicode编码转换成GB2312汉字
public string UtoGB(string str)
{
string[] ss = str.Split('%');
byte[] bs = new Byte[ss.Length - 1];
for (int i = 1; i < ss.Length; i++)
{
bs[i - 1] = Convert.ToByte(Convert2Hex(ss)); //ss[0]为空串
}
char[] chrs = System.Text.Encoding.GetEncoding("GB2312").GetChars(bs);
string s = "";
for (int i = 0; i < chrs.Length; i++)
{
s += chrs.ToString();
}
return s;
}
private string Convert2Hex(string pstr)
{
if (pstr.Length == 2)
{
pstr = pstr.ToUpper();
string hexstr = "0123456789ABCDEF";
int cint = hexstr.IndexOf(pstr.Substring(0, 1)) * 16 + hexstr.IndexOf(pstr.Substring(1, 1));
return cint.ToString();
}
else
{
return "";
}
}