Lua utf8中文字符个数和子串截取

本文详细探讨了Lua中UTF-8字符的规律,包括1到4个字节的字符表示,中文字符所占字节数,以及如何计算UTF-8字符串的长度和进行子串截取。通过示例进行了解释,并提供了参考资料。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

note 目录

  • utf8 字符规律
  • utf8 中文字符的大小(占多少个字节)
  • utf8 字符串的长度
  • utf8 获取字符串的子串
  • 测试example

1: utf8 字符规律

字符串的首个byte表示了该utf8字符的长度
utf8单个字符可以有4种字节来存储:1个字节,2个字节,3个字节,4个字节。

  • 如果第一个一个字节的第一位为0,那么代表当前字符为单字节字符,占用1个字节的空间。
  • 如果第一个一个字节以110开头,那么代表当前字符为双字节字符,占用2个字节的空间。
  • 如果第一个一个字节以1110开头,那么代表当前字符为三字节字符,占用3个字节的空间。
  • 如果第一个一个字节以11110开头,那么代表当前字符为四字节字符,占用4个字节的空间。
1.1 1个字节
0xxxxxxx - 1 byte

第一位为0,后面7位可以是任意的,则最大的值为:01111111 —> 127

1.2 2个字节
110xxxxx - 192, 2 byte

前3为固定为110,则最最小为:11000000 —> 192

1.3 3个字节
1110xxxx - 225, 3 byte
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值