使用c++分割utf8编码的中文

时间:2022-02-15 22:46:26

http://blog.ch-wind.com/c%E4%B8%AD%E6%96%87%E5%88%86%E5%89%B2/

其实最近一直都有遇到c++内的中文字符串问题,不过一直都通过各种方法绕过了。可是今天遇到了需要将字符串的中文和英文按字符分割的问题,实在是没有取巧的方法了。

由于从资源文件读取出来的是utf-8编码,而输出时也是用的utf-8编码。如果在中途对字符串进行转化处理的话实在是没有什么必要性。其实一直很好奇,无论是什么格式的编码,windows都是能正常识别的。最重要的是size和length返回的长度不同的话,那么内部就一定有相应的检测机制。于是,开始找字符编码相关的资料。以结论而言是这样的,UTF-8就是以8位为单元对UCS进行编码。从UCS-2到UTF-8的编码方式如下:

UCS-2编码(16进制) UTF-8 字节流(二进制)
0000 – 007F 0xxxxxxx
0080 – 07FF 110xxxxx 10xxxxxx
0800 – FFFF 1110xxxx 10xxxxxx 10xxxxxx

至于具体编码对应字符是怎样的其实并不重要了,对于分割utf-8字符而言,只要知道编码规则就好了。于是,接下来的工作就简单了。

至于GB2312编码,由于固定是双字节的,分割上就不会有什么问题了。