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);
}
{
int aCP = Win32Native.GetACP();
if (aCP == 0x4e4) //1252
{
return new SBCSCodePageEncoding(aCP);
}
return GetEncoding(aCP);
}