vs中ANSI编码和UNICODE编码及二者的兼容性问题
来源:互联网 发布:广东11选5数据360遗漏 编辑:程序博客网 时间:2024/05/16 17:03
ANSI编码的字符集是多字符集,也就是每个字符的编码宽度不相等。
UNICODE编码的字符集是宽字符集,每个字符的编码都是两个字符。
有些操作系统仅支持多字符集,有些操作系统仅支持宽字符集,当然更多的操作系统是两种字符集都支持。为了兼容两种字符集,vs编译器为使用宏定义的方法来选择编译成多字符集还是宽字符集,下面分别介绍:
1.多字符集(ANSI)
字符型是char const char*型是LPCSTR
对应的一些字符串相关函数:MessageBoxA(),strcpy(),strcat(),strlen() (注:以str开头)
2.宽字符集(UNICODE)
字符型是wchar_t const char*型是LPCWSTR
对应的一些字符串相关函数:MessageBox(),wcscpy(),wcscat(),wcslen(); (注:以wcs开头)
3.兼容字符集
兼容字符集要包含头文件<tchar.h>
字符型是TCHAR
如果是多字符型编译,就把宏展开成char;如果是宽字符集编译,就把宏展开成wchar_。
对于const char*要放在_T()宏定义中。比如:_T("Hello World!")。
那么如果选择了多字符编译,就把宏展开成"Hello World!";如果是宽字符编译,就把宏展开成L"Hello World!"
对应的一些字符集相关函数:MessageBox(),
_tcscpy(),_tcscat(),_tcslen() (注:以_tcs开头,是C运行时库)
或者lstrcpy(),lstrcat(),lstrlen() (注:以lstr开头,是Windows函数)。
兼容字符集的宏定义在头文件<tchar.h>中,部分代码如下所示:
#ifdef __UNICODE #define _tcslen wcslen #define TCHAR wchar_t #define LPTSTR wchar_t* #define _T(x) L##x#else #define _tcslen strlen #define TCHAR char #define LPTSTR char* #dfine _T(x) x#endif
- vs中ANSI编码和UNICODE编码及二者的兼容性问题
- VS中遇到的 UNICODE和ANSI 编码问题
- ANSI编码和Unicode编码的不同
- ANSI编码和Unicode编码的不同
- ANSI编码和Unicode编码的不同
- ANSI编码和Unicode编码的不同
- ANSI和unicode编码
- unicode编码和ansi编码
- Unicode编码和ANSI编码
- 字符编码ANSI和Unicode的比较
- 字符集编码ANSI和UNICODE
- 字符集编码ANSI和UNICODE
- Unicode编码和ANSI编码相互转换
- 关于Unicode编码和ANSI编码(2)
- Ansi与Unicode编码的转换及占用字节数
- CString与char*互转、ANSI 和 UNICODE 编码及_T和L宏定义的介绍
- 读取ANSI文件存入UNICODE编码的CString——“Ansi转UNICODE”及“UNICODE转Ansi”
- ASCII、ANSI、UNICODE及UTF-8编码
- Junit学习
- STRUTS2 ITERATOR标签STATUS属性
- Python+Numpy------数组运算
- java实现上位机与下位机串口通信
- shared_ptr
- vs中ANSI编码和UNICODE编码及二者的兼容性问题
- 【泛型】方法声明使用泛型
- IO流
- 安卓开发中自定义View之onMeasure(),onLayout(),onDraw()讲解(一)
- 【泛型】接口上定义泛型
- 【泛型】在类声明中使用泛型
- 小马哥---高仿苹果7p 主板型号A335 6735芯片系列刷机拆机图与开机识别图
- 【泛型】泛型里有个,通配符:?
- 分布式缓存的一致性Hash的Java实现