c++ 编码
http://club.topsage.com/thread-2227977-1-1.html
本地化策略集(locale)
宽字符: unicode, 每一个字符使用固定的字节。
多字节: utf-8, gbk,字体集当中每一个字符所占用的字节数不同。
unicode, utf-8,gbk之间转换关系:
unicode –> utf-8, unicode –> gbk, utf-8 <–> unicode <–> gk
环境:
c++ 字符串默认为ansi, 即本地化: 在WINDOWS 中文是GBK2312, 欧美,日本其是不同的。在程序要支持国际化是很麻烦的,如处理字符串长度 char *pStr = “我a”;中文与欧美环境是不同的,这就是多字节字符。
C++支持unicode字符串,只是在声明的时候要显示的声名,wchar_t *pStr = _T”我a”; 在所有环境都一样的。这就是宽字节字符。
基本api是支持本地:
如文件操作fopen只支持多字节字符串且为本地化,如为utf-8,需要先转换成unicode宽字节版本,然后再从unicode版本转换成本地化多字节版本。
C++多字节字符与宽字节字符相互转换
最近在C++编程中经常遇到需要多字节字符与宽字节字符相互转换的问题,自己写了一个类来封装wchar_t与char类型间的转换
http://club.topsage.com/thread-2227977-1-1.html
http://blog.csdn.net/stawn/article/details/10492111