文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Windows编程 - 02 - ANSI和Unicode字符处理

Windows编程 - 02 - ANSI和Unicode字符处理

时间:2010-09-09  来源:小风_ks

0. 为什么要使用Unicode

  • 简化本地化工作
  • 发布一个exe或DLL就可以支持所有语言
  • 高效率:Windows内部都使用Unicode处理字符
  • 很容易的与COM, .Net Framework整合 

1. Unicode编码
Unicode is a standard founded by Apple and Xerox in 1988.
Unicode的几种编码方式
UTF-8:有的字符1字节(小于0x0080, USA), 有的2字节(0x0080 and 0x07FF, Euro),有的3字节(大于0x0800), 还有一些4字节

UTF-16 所有字符都是2字节, 缺点就是不能包含所有字符,但是已经够用

UTF-32 所有字符都是4字节


2. ANSI和Unicode字符类型
char
wchar_t


一些windows定义的类型和宏, 我们在编写代码时就要使用 TCHAR, *PTCHAR, PTSTR 这几种类型
#ifdef UNICODE

typedef WCHAR TCHAR, *PTCHAR, PTSTR;
typedef CONST WCHAR *PCTSTR;
#define __TEXT(quote) quote          // r_winnt

#define __TEXT(quote) L##quote

#else

typedef CHAR TCHAR, *PTCHAR, PTSTR;
typedef CONST CHAR *PCTSTR;
#define __TEXT(quote) quote

#endif

#define   TEXT(quote) __TEXT(quote)


3. ANSI和Unicode windows函数
一般情况下Windows都会有如下三个名字的函数
CreateWindowEx
CreateWindowExW
CreateWindowExA


#ifdef UNICODE
#define CreateWindowEx CreateWindowExW
#else
#define CreateWindowEx CreateWindowExA
#endif


C runtime library Unicode函数和新名字
#ifdef _UNICODE
#define _tcslen     wcslen
#else
#define _tcslen     strlen
#endif


4. Windows安全函数
在函数名后面加上”_s”
_tcscpy_s
_tcscat_s

 

5. ANSI 和Unicode函数之间的转换
相关函数
int MultiByteToWideChar(
   UINT uCodePage,
   DWORD dwFlags,
   PCSTR pMultiByteStr,
   int cbMultiByte,
   PWSTR pWideCharStr,
   int cchWideChar);


int WideCharToMultiByte(
   UINT uCodePage,
   DWORD dwFlags,
   PCWSTR pWideCharStr,
   int cchWideChar,
   PSTR pMultiByteStr,
   int cbMultiByte,
   PCSTR pDefaultChar,
   PBOOL pfUsedDefaultChar);


BOOL IsTextUnicode(CONST PVOID pvBuffer, int cb, PINT pResult);

 

参考:

Windows via C/C++, Fifth Edition,  Jeffrey Richter, Christophe Nasarre

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载