今天和大家分享下如何遍历中文字符串,主要是如何打印中文字符,因为中文字符串每个字符占用不只一个字节的空间,如果我们逐个字节遍历,会出现奇怪的结果。而UTF-8编码写的中文字符是有特定结构的,我们可以按照它的规则去遍历打印。
下面是详情:
前提:UTF-8编码。
先看下面的代码和运行结果:

上面代码定义了一个9个中文的字符串,但打印size确是27,挨个字符遍历也都是�。
这个本质是因为中文不只占用一个字节的空间,换一种方式遍历:

因为一个中文字符不一定占用几个字节,但它们的长度其实可以从字符的头中读取出来,这点可以查看UTF-8的Wiki介绍:https://en.wikipedia.org/wiki/UTF-8#Description

这里可以看到,通过Byte1的前4位就可以区分出这个字符究竟占用几个字节,所以就有了上述的遍历方式。
-
编码
+关注
关注
6文章
1016浏览量
56666 -
字符
+关注
关注
0文章
237浏览量
26059 -
代码
+关注
关注
30文章
4942浏览量
73165
原文标题:如何遍历中文字符串?
文章出处:【微信号:程序喵大人,微信公众号:程序喵大人】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
DB Tools insert data.vi寫入中文字符串至Mysql數據庫失敗
关于定义中文字符串的问题
如何在multiedit中对中文字符进行删除操作?
C语言关于中文字符串的使用误区在哪
Arduino发送中文字符为什么需要转码?
如何在终端上使用UART输出中文字符
IAR中UTF-8中文字符串不显示怎么解决?
字符串的表示
PHP多字节字符串处理函数mbstring函数库的详细资料说明

如何遍历中文字符串
评论