http://blog.csdn.net/timothyfly/article/details/7655193
C++读取unicode文本
1.unicode概念
unicode字符集,什么是字符集,字符集就是一个映射表计算机通过它找到对应的字符;unicode的把全球所有文字都做了映射。
utf-8、utf-16、utf-32都是编码方式,各自实现各自的方便。
utf-8来说利于传输因为它是变长的,有一个字节的(ascii在utf-8中都只占一个字节并且是一致的),俩的,三个的。
有一个传输出错不会影响其他的。如果是固定长度的多字节编码,少一个字节后面的往前补上,所有的字符编码都变了,都成乱码了。
另一个utf-8的好处是字符编码的每个字节都不会是0000h,这样strlen得到的是正确大小,而utf-16和utf-32,如果用char字符串的话,则会有0000h(标志结束位)在字符串的非真正结束的地方存在(如果用wchar_t专用的的方法处理就会避免这些问题)。
utf-16和unicode的编码是一样的。
字符集和实际编码的联系:因为每个字符和其字符集中的16位二进制码值是一一对应的,实际编码只有转换成相应的字符集对应的16位的unicode码才能知道它代表哪个字符。
现在C++的字符分成两种类型wchar_t和char。
其中 WCHAR==wchar_t,CHAR==char。
TCHAR是一种条件编译的类型,根据条件可以代表wchar_t或char。
CHAR实施上就是unsigned char,
WCHAR为宽字符,
而TCHAR根据是否支持unicode而不同。