【百度搜索】宽字符
ANSI字符集称为窄字符,8位,C语言用unsigned char表示,不能存放世界上所有语言所有文字。
UNICODE字符集称为宽字符,16位,C语言用unsigned short表示,可以存放世界上所有语言所有文字。
当今时代,应该杜绝ANSI的应用程序了,转而发展UNICODE的程序!!
VC++6.0之前没有关键字wchar_t,用unsigned short表示WCHAR;
VC++7.0之后有了关键字wchar_t,用来表示WCHAR,及宽字符;
Unicode 是支持所有字符集(包括无法以单个字节表示的字符集)的规范。为国际市场编程时应考虑使用 Unicode 或多字节字符集(MBCS),或使程序能够通过更改开关来生成支持两种字符集之一的程序。
宽字符是双字节多语言字符代码。在当今的全球计算业内使用的大多数字符(包括技术符号和特殊的发布字符),都可以根据 Unicode 规范表示为宽字符形式。无法以 1 个宽字符表示的字符可以通过 Unicode 的代理项功能以 Unicode 对表示。由于每个宽字符总是以固定的 16 位大小表示,因此使用宽字符可以简化使用国际字符集进行的编程。
宽字符字符串表示为一个 wchar_t[] 数组并由 wchar_t* 指针指向它。可以通过用字母 L 作为字符的前缀将任何 ASCII 字符表示为宽字符形式。例如,L'\0' 是终止宽(16位)NULL 字符。同样,可以通过用字母 L 作为 ASCII 字符串的前缀(L"Hello") 将任何 ASCII 字符串表示为宽字符字符串形式。
通常,宽字符在内存中占用的空间比多字节字符多,但处理速度更快。另外,在多字节编码中一次只能表示一个区域设置,而世界上的所有字符集都同时以 Unicode 表示形式表示。