Encoding in .net

本文介绍了不同编码格式下的BOM(Byte Order Mark)值,并探讨了UTF-8编码在.NET中的使用方式及其与BOM的关系。此外,还列举了一些常见的字符集及其在.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);
}
 

转载于:https://www.cnblogs.com/teamleader/archive/2011/01/21/1940941.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值