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);
}