对ASCII、UNICODE、DBCS/MBCS、char、wchar_t的学习笔记

ASCII是用8位表示的一种编码方法、UNICODE是用16位(两个字节)表示的一种编码方法。(具体详细参考其他关于ASCII/UNICODE文章)

DBCS/MBCS是Double/Multi Byte Character Set,是专为亚洲地区(如中日韩)操作系统提供的一种编码方式,根据数据的字符确定由几位表示。如:“中国abc”,则“中国”分别用两个字节表示“中”和“国”,而“abc”则分别由一个字节表示“a”、“b”、“c”。(更详细信息参考其他DBCS/MBCS的文章)

 

对于_T表示的如char和wchar_t,表示用窄字符还是宽字符存储数据。有_UNICODE决定。

L 表示用于存储宽字符的数据,如wchar_t存储而不能用char存储。

 

wchar_t存储的是宽字符版的数据:UNICODE

char存储的是ASCII/DBCS这样的数据

DBCS虽然是双字节数据,但也只能用char存储而不能用wchar_t存储

 

函数MultiByteToWideChar/WideCharToMultiByte是用于转换UNICODE码(如UTF-8)和ASCII/DBCS码的,同样表示的意义也是宽字符和窄字符(多字节字符)间的转换。

 

 

//问题描述:

在用于GBK下的简繁体转换、GBK和Big5的转换时用于存储的应该是多字节的char而不应该是宽字符的wchar_t,使用wchar_t的地方是UNICODE编码的数据。

 

//疑问:

难道在存储GBK、Big5这样的数据时用的都只能是char?使用了wchar_t存储的只能是UNICODE?

是否可能用wchar_t存储Big5下的数据?

 

 

 

//追加:(因自己不能评论自己的东西,所以只能重新编辑文章,将以后自己找的相关整理的资料追加到下面,下面的内容可能为引用他人文章)

1.

引自:http://blog.csdn.net/hairetz/archive/2009/05/18/4198191.aspx

什么是宽字符:对宽字符的支持其实是ANSI C标准的一部分,用以支持多字节表示一个字符。宽字符和Unicode并不完全等同,Unicode只是宽字符的一种编码方式。

你可能感兴趣的:(c,存储,character,byte)