1、Encoding类
使用Encoding类可以获取到指定类型的Encoding对象。
Encoding e1 = Encoding.Default;//当前系统设置的“默认字符集编码方式”
Encoding e2 = Encoding.ASCII;//获取ASCII编码
Encoding e3 = Encoding.Unicode;//获取Unicode编码
Encoding e4 = Encoding.UTF32;//获取UTF32编码
Encoding e5 = Encoding.UTF7;//获取UTF7编码
Encoding e6 = Encoding.UTF8;//获取UTF8编码
Encoding e7 = Encoding.BigEndianUnicode;//获取UTF16编码
Encoding e8 = Encoding.GetEncoding(936);//获取gb2312编码
GetEncoding()方法具有以下几种重载形式。
public static Encoding GetEncoding(int codepage);
public static Encoding GetEncoding(string name);
public static Encoding GetEncoding(int codepage, EncoderFallback encoderFallback, DecoderFallback decoderFallback);
public static Encoding GetEncoding(string name, EncoderFallback encoderFallback, DecoderFallback decoderFallback);
其中的参数codepage和name表示代码页标识符、代码页名称。代码页是字符集编码的别名,也有人称”内码表”。可以调用Encoding.GetEncodings()方法查看系统包含的所有编码信息。
foreach (EncodingInfo es in Encoding.GetEncodings())
{
SimpleLoger.WriteLog("----------------------------------");
SimpleLoger.WriteLog("CodePage=" + es.CodePage);
SimpleLoger.WriteLog("Name=" + es.Name);
SimpleLoger.WriteLog("DisplayName=" + es.DisplayName);
}
下面给出部分查询结果。
CodePage=37
Name=IBM037
DisplayName=IBM EBCDIC (美国-加拿大)
CodePage=437
Name=IBM437
DisplayName=OEM 美国
CodePage=500
Name=IBM500
DisplayName=IBM EBCDIC (国际)
Encoding常用子类包含ASCIIEncoding、UTF8Encoding、UTF7Encoding、UTF32Encoding等。
这些类也可以调用Encoding的Default、ASCII、Unicode、UTF32、UTF7、UTF8、BigEndianUnicode等属性,同样可以调用GetEncoding()、GetEncodings()等方法。
2、编码和解码操作
Encoding对象具有GetString()和GetBytes()方法,用于将指定字节数组中的所有字节解码为一个字符串,反过来,将指定的字符集进行编码生成字节数组。
public static string GetString(byte[] byteArray, Encoding encode)
{
return encode.GetString(byteArray);
}
public static byte[] GetBytes(string inputString, Encoding encode)
{
return encode.GetBytes(inputString);
}
使用Encoding.Convert()方法可以转换编码。
byte[] byteArray = Encoding.UTF8.GetBytes(sources);//可能是从其他地方获取过来的参数
buffer = Encoding.Convert(Encoding.UTF8, Encoding.ASCII, byteArray);
其中Encoding.UTF8为原始编码,Encoding.ASCII为目标编码。
3、url编码解码
Server.UrlEncode("");
Server.UrlDecode("");
System.Web.HttpUtility.UrlEncode("");
System.Web.HttpUtility.UrlDecode("");
System.Uri.EscapeDataString("");
System.Uri.UnescapeDataString("");