vc中,unicode项目向多字节字符集项目移植.

本文详细介绍了在Visual C++中,如何将一个使用Unicode字符集的项目转换为多字节字符集(MBCS)项目。内容包括预处理器宏的替换、字符串处理函数的选择以及需要注意的语言特性差异等关键步骤。
摘要由CSDN通过智能技术生成

 





1: 首先更改项目属性为多字节字符集.

2: 对于所有 L"字符串", 去掉L, 或改为=> _T("字符串")   
    ps1: _T是个自动替换的宏, 可以根据编译条件的不同, 替换成不同的东西.
    ps2:若想使用_T,要先包含<tchar.h>文件
3: 替换所有的 WCHAR 为 TCHAR
4: 替换所有的Unicode函数为非Unicode函数 eg _wsplitpath_s => _splitpath_s
     ps1: 最好使用那些能够根据编译条件自动替换的函数.
            想所有的windowsAPI, 他都提供了两个版本. 可以根据编译条件自动替换
5: 对于那些仅提供Unicode版本的函数, 那么就只要修改我们的参数以适应.
    eg: CImage::FromFile( CString str )=>CImage::FromFile( CString str)
    ==>    eg: CImage::FromFile( CString str )=>CImage::FromFile( CString str.AllocSysString() )
6: 有个MultiChar***的函数. 也可以把多字节字符转换为unicode字符.

PS :多字节字符集MBCS的含义是: 对于ANSI字符, 仅占用一个字节, 对于非ANSI字符, 比如中文,日文, 都占用两个字节.
      由于ANSI字符有128个, 所以, ANSI字符的bit最高位为0, 当bit最高位为1时, 就表示是个双字节字符了.
      多字节字符集有时也称为 ANSI字符. 这是因为 MSDC兼容ANSI的表示.
PS2: 对于Unicode字符串, 结尾符为0x0000, 对于ansi字符串结尾符为0x00, 对于MBCS,结尾福为 0x00(这个0x00是ANSI的一个字符, MSCB肯定兼容了)

对于 char * pStr = "ddd中";
ANSI函数 strlen: 返回 5
MBCS函数 _mbslen: 返回 4, 它能识别到中是一个字符(双字节)
UNICODE函数 wcslen: 报错, 无法将char*类型转化为 w_char*类型!!!

 

Q UNICODE字符串如何显示
A
如果程序定义了_UNICODE宏直接用
WCHAR *str=L"unicodestring";
TextOut(0,0,str);
否则就需要转换类型
#include <comdef.h>
WCHAR *str=L"unicodestring"; <

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值