谈C#中编码Encoding
.NET中的String确实只有Unicode一种。所以编码格式的字节序列转换成String时最终都是以Unicode表示。
System.Text.Encoding.Default是取系统的当前ANSI代码页的编码(MSDN上抄的),即当前系统的编码。(在我们的机子上一般都是"gb2312")这就是我每次用Default读取文件流都正确,且必须用Default读取才正确的原因----其实Encoding.GetEncoding("GB2312")也一样。
指定的编码都只是指byte[]
即Encoding.UTF8.GetString(byte[] buffer)是告诉系统buffer的编码是UTF8,将用UTF8编码来对byte[]进行解码。
byte[] buf = Encoding.UTF8.GetBytes(string str)是告诉系统返回的buf编码方式是UTF8,将用UTF8编码方式对str进行编码。