Encoding in .net

BOM: Byte Oder Mark
 

编码

BOM

UTF-8

EF BB BF

UTF-16  big endian

FE FF

UTF-16  little endian (Unicode)

FF FE

UTF-32  big endian

00 00 FE FF

UTF-32  little endian

FF FE 00 00

 
你可能不知道:一个汉字用utf-8编码会用3个字节。
 
NET中的StreamWriter默认采用UTF8编码格式编码字符串,但并不将UTF8所对应的BOM值(“EF BB BF”)写入到二进制流中。UTF8Encoding 的默认构造函数也不带BOM,而Encoding.UTF8是带BOM的。
 
DBCS double-byte character set
SBCS single-byte character set
 
在中文环境下Encoding.Default属性返回的类型是DBCSCodePageEncoding,这是一个internal的类

代码页标识值

.NET中的名字

936

gb2312

950

big5

1200

utf-16

52936

hz-gb-2312

54936

GB18030

65000

utf-7

65001

utf-8

932

Japanese Shift-JIS

 
private static Encoding CreateDefaultEncoding()
{
    int aCP = Win32Native.GetACP();
    if (aCP == 0x4e4) //1252
    {
        return new SBCSCodePageEncoding(aCP);
    }
    return GetEncoding(aCP);
}
 

posted @ 2011-01-21 11:08  队长  阅读(286)  评论(0编辑  收藏  举报