MFC对Unicode与Multibyte Character Set(MBCS)的支持

由于诸如日语、中文等语言字符集庞大,为了支持这些编程市场,MFC支持两种方法:
- Unicode
- Multibyte Character Sets ( MBCS )

对于新开发,最好都用Unicode进行。

MFC对Unicode字符串的支持

CString是基于数据类型TCHAR。如果定义了符号 _UNICODE,TCHAR就被定义成了类型 wchar_t,一个16位的字符编码类型;否则,TCHAR就被定义为了 char,也就是通常的8位字符编码。因此,在Unicode下,一个CString字符串由16位的字符集组成。不使用Unicode,则字符串由char类型的字符集组成。

要使用Unicode编程,你必须:
1. 使用 _T 宏来定义字符串以保证程序可以移植到Unicode平台
2. 当传递一个字符串,须当心函数参数长度是以字符为单位 还是以字节为单位
3. 使用可移植的C-运行时库 版本的字符串处理函数
4. 使用以下字符和字符指针的数据类型:
- (a) TCHAR 当你要使用char的时候
- (b) LPTSTR 当你要使用char*的时候
- (c) LPCTSTR 当你要使用const char* 的时候。CString 提供了一个LPCTSTR操作符来实现 CString到LPCTSTR的转换

MFC对MBCS字符串的支持

官方提示:
MBCS字符串是传统技术,新工程中不应当再使用。以下信息提供了一些情景,在这些情况下, 你需要维护现存的使用MBCS的代码,并且这些代码不容易升级到Unicode的形式。

安全提示:
在VS2013及以后的版本中,MBCS的DLL仅作为一个免费的插件提供在MSDN的下载站点上。

在多字节字符集中,一个字符可以是一个或者两个字节的宽度。 如果是两个字节的宽度,那么它的第一个字节是一个叫 “lead byte”的字节,是从一个特定的范围里选定的字节,取决于哪个代码页(code page)正在被使用。这个lead和 trail bytes指定了一种特定的字符编码。

如果符号 _MBCS定义了,那么类型TCHAR,(CString基于此)就映射到char。 对于CString中哪个字节是lead字节,哪些字节是trail bytes完全由用户决定。 C-运行时库 提供函数来实现此操作。

在DBCS(double-bye character sets)下,一个字符串可以仅包含单字节的ANSI字符,或者仅包含双字节字符,或者是两者的结合。这种可能性要求解析字符串的时候要特别当心。包括CString对象。

根据 _MBCS与_UNICODE的不同定义情况,_tcscmp映射如下:

MACROSfunctions
_MBCS defined_mbscmp
_UNICODE definedwcscmp
Neither symbol definedstrcmp
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

轻蓝雨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值