字符编码篇

      在进行WINDOWS编程的时候,需要学习的第一个知识点就是字符编码。因为最开始的windows使用的是ASCII码。在科技的不断应用中,人们发现ASCII码不够使用,然后就发展了很多编码如扩展ASCIIGB2312GBKUnicode等等。对于ASCIIGB2312GBK码的关系,我们只需要知道一点这些编码方法是向下兼容的,即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符。就是说如果一个字是ASCII进行编码的,你传递给一个能解析GBK编码的程序是不会出现乱码的。还有一点我们需要知道的是Unicode编码有很多种,那windows使用是那一种。在MSDN上,我找到了如下描述:

These functions use UTF-16 (wide character) encoding, which is themost common encoding of Unicode and the one used for native Unicode encoding onWindows operating systems.

就是说UTF-16windows操作系统现在推荐使用的编码。在我们使用VS建立一个工程时,默认的编码是Unicodewindows采用的也就是UTF-16。关于编码方面更多的内容可以参考:

http://msdn.microsoft.com/en-us/library/dd317743(v=VS.85).aspx也可以自己Google

         现在我们的重点是如何实现ASCII码(扩展ASCII)与UTF-16的转换。参考MSDN字符转换相关函数页面:http://msdn.microsoft.com/en-us/library/dd374085(v=VS.85).aspx

         An application can usethe MultiByteToWideChar and WideCharToMultiByte functions to convert between strings based on code pages andUnicode strings. Although their names refer to "MultiByte", thesefunctions work equally well with single-byte character set (SBCS),

 double-byte character set (DBCS), and multibytecharacter set (MBCS) code pages.

这里SBCS = ASCIIDBCS = 扩展ASCII。这下好了我把这里面常用的概念都说清楚了。总结来说四点:

1.      ASCIIGB2312GBK是向下兼容

2.      SBCS=ASCIIDBCS=扩展ASCII

3.      Windows使用的UnicodeUTF-16

4.      MultiByte指的是ASCII,扩展ASCIIWideChar指的是UTF-16

后续要做的就是利用前面提到的两个函数进行转换了。这个网上很多,看MSDN也就知道了,再不行看《Windows核心编程》也说了的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值