一、UTF-8编码规则
UTF-8 是 Unicode 的实现方式之一其对应关系(编码规则)如下表所示:
UTF-8编码方式(二进制) |
---|
UTF-8 最大的一个特点,就是它是一种变长的编码方式它可以使用1~4个字节表示一個符号,根据不同的符号而变化字节长度
- 对于单字节的符号,字节的第一位设为0后面7位为这个符号的 Unicode 码。取值0-127与标准ASCII 码一一对应。標准ASCII 码表见附录
- 对于n字节的符号(n > 1),第一个字节的前n位都设为1第n + 1位设为0,后面字节的前两位一律设为10剩下的没有提及的二进制位,全部为这个符号的 Unicode 码
1.2 UTF-8的中文一个字符的长度编码如何生成
二、lua 获取UTF-8一个字符的长度串长度(含中文)
到这里,已经知道UTF-8的一个字符的長度、中文是怎么生成的了又出现了2个疑问:
- 在lua中怎么判断一个一个字符的长度是不是中文?
- 这个一个字符的长度是由几个字节组成
2.1 lua判断一个字符的长度是不是中文
- 解释:函数返回一个字符的长度s[i], s[i+1], ···, s[j]的内部数字编码(ASCII码),其中参数i的默认值是1而参数j的默认值是i。
2.3 一个芓符的长度是由几个字节组成
读取第一个字节在以下区间的代表不同的字节数:(有疑问看1.1表)
- [
0
,0xc0
) 表示这个一个字符的长度仅由1个字节构荿
示例: UTF-8一个字符的长度串:我们We
,
-
游戏中希望把一个汉字当做2个字节处理
characters("我们We", 2)
(因为1个汉字的宽度和2个字母相仿)
示例-代码运行.png