字符集和编码格式

刚开始 接触字符集的时候,只知道有两种字符集:

(1)多字节(mbcs)

(2)Unicode

对着这两种字符集也只是知道,并不知道其真正的区别。


工作之后,总是遇到这种字符集和字符编码的概念。

总是在想这种字符集下的字符在内存中是怎样存储的。

但是就是弄不清楚这种关系,于是带着疑问去寻找答案。


首先不管是多字节还是unicode 字符集,他们都是值得一个字符集合,

这个集合中规定了含有那些字符和文字。

但他们并不能确定在内存中的存储格式(指的是占用几个字节)


而编码格式则表示了一种字符集中字符对应在内存中的存储格式。

有时,字符集也指编码格式

比如GB2312 、gbk、gb18030既是字符集也是编码格式(他们都属于多字节范畴)

他们在内存中都属于变长存储。也就是说ascii码占用一个字节,其他的占用至少2个字节


同样UNicode对用多种编码格式,通常用的是utf16 和utf8两种

utf16所有的字符都用两个字节存储

而utf8也属于变长存储,1~4字节不等。


总而言之,就是字符集就是所有字符的集合,与存储方式无关。

而编码格式才与存储方式有关。


这里顺便说下:

我们通常使用的操作系统,如果使用的是简体中文版,那么采用的字符集是GB2312

这样在界面上显示的所有文字采用的编码格式也都是gb2312(多字节)。


但我们用mfc 创建工程时,选择使用UNICODE字符集,那界面上的文字编码还是GB2312吗?

答案是确定的,只不过在我们调用微软提供的API,他们应该自动做了转换(转换为utf16编码)



如有不正确的地方,烦请批评指正。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值