没有合适的资源?快使用搜索试试~ 我知道了~
MBCS编码和UNICODE编码的相互转换.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 181 浏览量
2022-11-01
20:33:35
上传
评论
收藏 63KB DOCX 举报
温馨提示
试读
5页
。。。
资源推荐
资源详情
资源评论
MBCS 编码和 UNICODE 编码的相互转换
今天写的一段代码涉及到 MBCS 编码和 UNICODE 编码的相互转换,查了一下 MSDN 的相
关资料,整理如下:
在 VC6 中,默认使用 MBCS 编码,即多字节字符,实际就是支持大于 0x80 的 ASCII 码。
这样,一个中文字可以表示为 2 个字节,GB2312 就是这样表示的。
VC6 的默认安装是不带 UNICODE 库的,要在 VC6 中写 UNICODE 程序,必须安装 CRT
和 MFC 的 Unicode 库。
要使你的程序支持 Unicode,要在你的项目属性中去掉"_MBCS"宏定义,增加"UNICODE"
和"_UNICODE"两个宏定义。(注意,这两个都应该加上,因为 CRT 和 MFC 使用 UNICODE
定义,而 STL 则使用_UNICODE)
如果你的程序是 MFC 的,则 Unicode 版 MFC 库的入口点是 wWinMainCRTStartup。
为了方便开发者,VC6 中提供了 Tchar.h,里面定义了一些宏用来帮助写两种编码都兼容
的代码。
类型
一般文本
_UNICODE 和
数据类型名称
_MBCS 已定义
_UNICODE 已定义
_MBCS 未定义
_TCHAR
_TINT
char
char
wchar_t
wint_t
int
int
_TSCHAR
_TUCHAR
_TXCHAR
signed char
unsigned char
char
signed char
unsigned char
unsigned char
wchar_t
wchar_t
wchar_t
无效(由预处理器移 无效(由预处理器 L(将后面的字符或字符串转换
除) 移除) 成相应的 Unicode 形式)
_T 或 _TEXT
CRT 中的相关函数在 Tchar.h 中都定义了相应的替代,基本是将 str 换成了_tcs,比如:
CRT 中的 unsigned int strlen(const char *)现在是 unsigned int _tcslen(const TCHAR*),在
Uniocde 时,将被替换为 unsigned int _wcslen(const wchar_t)*,而在 MBCS 时,会被替换为
unsigned int _mcslen(const char*)。
看,写 Unicode 和 MBCS 兼容的代码挺容易的吧,我总结了一些替换规则
1 将 char 换成 TCHAR (unsigned char 必须去掉 unsigned)
2 将 str 函数换成_tcs 函数
3 将字符串常量定义加要_T("")宏
4 printf 函数族必须修改为 wprintf,不过要注意千万不要使用 wprintf 函数来解析 char 型
很多时候程序中既需要 Unicode,又需要使用 ASCII,这时需要用到操作系统的 2 个 API
WideCharToMultiByte用来将 Unicode 字符串转化为 MBCS 的
MultiByteToWideChar用来将 MBCS 字符串转化为 Unicode 的
一些注意事项:
资源评论
G11176593
- 粉丝: 6643
- 资源: 3万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功