VC6中的MBCS和UNICODE编码
来源:互联网 发布:ubuntu安装qq的命令 编辑:程序博客网 时间:2024/06/08 06:16
在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,里面定义了一些宏用来帮助写两种编码都兼容的代码。 类型 _TCHAR char char wchar_t _TINT int int wint_t _TSCHAR signed char signed char wchar_t _TUCHAR unsigned char unsigned char wchar_t _TXCHAR char unsigned char wchar_t _T 或 _TEXT 无效(由预处理器移除) 无效(由预处理器移除) L(将后面的字符或字符串转换成相应的 Unicode 形式) 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的 一些注意事项: 在Unicode编码下,sizeof没那么可靠了,memset( ,0, sizeof())的习惯用法可能会出大错,改成memset(,0,sizeof()/szieof(TCHAR))就没事了,呵呵 在Unicode下,一个中文字符就是一个字符,len = strlen() / 2;这样可不行了一般文本 数据类型名称 _UNICODE 和 _MBCS 未定义 _MBCS 已定义 _UNICODE 已定义
- 【转】VC6中的MBCS和UNICODE编码
- VC6中的MBCS和UNICODE编码
- VC6中的MBCS和UNICODE编码
- EasyX鼠标函数和MBCS、Unicode编码
- C++ 中的字符集 Unicode 和 MBCS
- MBCS和UNICODE
- unicode和MBCS
- Unicode和MBCS
- Unicode 和 MBCS
- VS2013的MBCS和Unicode字符编码问题
- unicode 和 mbcs、ansi 转换
- unicode 和 mbcs、ansi 转换
- ANSI,MBCS和Unicode三种编码方式使用swprintf函数的陷阱
- vc6 unicode编码
- VC6.0 MBCS工程使用RichEdit控件显示Unicode字符
- UNICODE???MBCS???
- Unicode 和多字节字符集 (MBCS) 支持
- Unicode和多字节字符集 (MBCS) 杂谈
- 'mysql' 不是内部或外部命令,也不是可运行的程序,或批处理文件。
- 破解Word文档保护全过程
- 关于VS 2008 与 SQL 2005 安装时冲突问题解决
- C#多国语言支持的WinForm程序开发(转)
- Oracle服务启动命令
- VC6中的MBCS和UNICODE编码
- C#编程实现多语言WinForm程序
- 在IT部门和研发部门的工作差别
- 使用 Named Pipes 创建有效的连接字符串
- 人到底有多少时间在为自己
- C语言高级编程学习笔记--指针
- BT基础知识简介-1
- 人死了真的有魂吗?
- 调式技巧小总结