unicode字符转换成ansi字符
2013-10-24 16:29
337 查看
#include <atlconv.h>
USES_CONVERSION;
W2A
用是把unicode字符转换成ansi字符。宽字节转换成多字节
(WideCharToMultiByte)
A2W
用是把ansi字符转换成unicode字符。多字节转换成宽字节
(MultiByteToWideChar)
1. CString 转 wchar_t
CString path = "asdf";wchar_t wstr[256] =
path.AllocSysString();
或者:wchar_t wcstring[256];
MultiByteToWideChar(CP_ACP,0,wcstring,-1,path,256);
2. wchar_t转CString
WideCharToMultiByte(CP_ACP,0,path,256,wcstring,256,NULL,NULL);
CHAR为单字节字符。还有个WCHAR为Unicode字符,即不论中英文,每个字有两个字节组成。
如果当前编译方式为ANSI(默认)方式,TCHAR等价于CHAR,如果为Unicode方式,TCHAR等价于WCHAR。
LPCSTR 相当于CONST CHAR * 和LPSTR 相当于CHAR *。
Unicode称为宽字符型字串,COM里使用的都是Unicode字符串。
将ANSI转换到Unicode
(1)通过L这个宏来实现,例如: CLSIDFromProgID( L"MAPI.Folder",&clsid);
(2)通过MultiByteToWideChar函数实现转换,例如:
char *szProgID = "MAPI.Folder";
CLSID clsid;
int len = ::MultiByteToWideChar (CP_ACP, 0, szProgID, -1, 0, 0);
wchar_t *wstr = new wchar_t[len];
::MultiByteToWideChar (CP_ACP, 0,szProgID, -1, wstr, len);
(3)通过A2W宏来实现,例如:
USES_CONVERSION;
CLSIDFromProgID( A2W(szProgID),&clsid);
将Unicode转换到ANSI
(1)使用WideCharToMultiByte,例如:
// 假设已经有了一个Unicode 串 wszSomeString...
int len = ::WideCharToMultiByte (CP_ACP, 0, wszSomeString, -1, 0, 0, 0, 0);
char *str = new char[len];
::WideCharToMultiByte (CP_ACP, 0, wszSomeString, -1, str, len, 0, 0);
(2)使用W2A宏来实现,例如:
USES_CONVERSION;
pTemp=W2A(wszSomeString);
USES_CONVERSION;
W2A
用是把unicode字符转换成ansi字符。宽字节转换成多字节
(WideCharToMultiByte)
A2W
用是把ansi字符转换成unicode字符。多字节转换成宽字节
(MultiByteToWideChar)
1. CString 转 wchar_t
CString path = "asdf";wchar_t wstr[256] =
path.AllocSysString();
或者:wchar_t wcstring[256];
MultiByteToWideChar(CP_ACP,0,wcstring,-1,path,256);
2. wchar_t转CString
WideCharToMultiByte(CP_ACP,0,path,256,wcstring,256,NULL,NULL);
CHAR为单字节字符。还有个WCHAR为Unicode字符,即不论中英文,每个字有两个字节组成。
如果当前编译方式为ANSI(默认)方式,TCHAR等价于CHAR,如果为Unicode方式,TCHAR等价于WCHAR。
LPCSTR 相当于CONST CHAR * 和LPSTR 相当于CHAR *。
Unicode称为宽字符型字串,COM里使用的都是Unicode字符串。
将ANSI转换到Unicode
(1)通过L这个宏来实现,例如: CLSIDFromProgID( L"MAPI.Folder",&clsid);
(2)通过MultiByteToWideChar函数实现转换,例如:
char *szProgID = "MAPI.Folder";
CLSID clsid;
int len = ::MultiByteToWideChar (CP_ACP, 0, szProgID, -1, 0, 0);
wchar_t *wstr = new wchar_t[len];
::MultiByteToWideChar (CP_ACP, 0,szProgID, -1, wstr, len);
(3)通过A2W宏来实现,例如:
USES_CONVERSION;
CLSIDFromProgID( A2W(szProgID),&clsid);
将Unicode转换到ANSI
(1)使用WideCharToMultiByte,例如:
// 假设已经有了一个Unicode 串 wszSomeString...
int len = ::WideCharToMultiByte (CP_ACP, 0, wszSomeString, -1, 0, 0, 0, 0);
char *str = new char[len];
::WideCharToMultiByte (CP_ACP, 0, wszSomeString, -1, str, len, 0, 0);
(2)使用W2A宏来实现,例如:
USES_CONVERSION;
pTemp=W2A(wszSomeString);
相关文章推荐
- WINDOWS CE下ANSI 与 Unicode 字符相互转换
- WINDOWS CE下ANSI 与 Unicode 字符相互转换
- WindowsCE下Unicode和Ansi字符间互相转换的函数
- C/C++ 各种字符编码字符串的转换 可用于XML文件的字符转化读写 (收集 GBK - UTF8 - Unicode - ANSI )
- ANSI、Unicode和宽字符之间的转换
- ANSI字符和UNICODE字符的转换
- ANSI、Unicode和宽字符之间的转换
- ANSI、UNICODE和UTF8之间字符转换
- ANSI、Unicode和宽字符之间的转换
- [收集]ANSI字符与Unicode字符的互相转换
- 在Window CE中Unicode和Ansi字符间互相转换
- Unicode和ANSI字符的转换
- Unicode 和Ansi下的字符和字符串转换问题
- WindowsCE下Unicode和Ansi字符间互相转换的例子
- WindowsCE下Unicode和Ansi字符间互相转换的函数
- Unicode环境下宽字符CString与ANSI字符const char* 的转换
- gb2312unicode字符转换
- 字符编解码的故事(ASCII,ANSI,Unicode,Utf-8区别)
- UNICODE环境下将宽字符CString转换为char*
- 用sprintf完成ANSI与UNICODE的转换