lua utf-8编码的汉字
2014-03-08 15:31
761 查看
lua 的string库不支持处理utf-8编码的汉字。用lua要处理汉字还是很费劲的。
UTF8的编码规则:
1. 字符的第一个字节范围: 0x00—0x7F(0-127),或者 0xC2—0xF4(194-244); UTF8 是兼容 ascii 的,所以 0~127 就和 ascii 完全一致
2. 0xC0, 0xC1,0xF5—0xFF(192, 193 和 245-255)不会出现在UTF8编码中
3. 0x80—0xBF(128-191)只会出现在第二个及随后的编码中(针对多字节编码,如汉字)
这样我们可以利用lua强大的模式匹配,来实现我们要的效果,关键的处理有这么两个:
1. local _, count = string.gsub(str, "[^\128-\193]", ""),用来得到str中的字符数
2. for uchar in string.gfind(str, "[%z\1-\127\194-\244][\128-\191]*") do tab[#tab+1] = uchar end,用来把str中的每个字符映射到tab中
UTF8的编码规则:
1. 字符的第一个字节范围: 0x00—0x7F(0-127),或者 0xC2—0xF4(194-244); UTF8 是兼容 ascii 的,所以 0~127 就和 ascii 完全一致
2. 0xC0, 0xC1,0xF5—0xFF(192, 193 和 245-255)不会出现在UTF8编码中
3. 0x80—0xBF(128-191)只会出现在第二个及随后的编码中(针对多字节编码,如汉字)
这样我们可以利用lua强大的模式匹配,来实现我们要的效果,关键的处理有这么两个:
1. local _, count = string.gsub(str, "[^\128-\193]", ""),用来得到str中的字符数
2. for uchar in string.gfind(str, "[%z\1-\127\194-\244][\128-\191]*") do tab[#tab+1] = uchar end,用来把str中的每个字符映射到tab中
相关文章推荐
- 汉字的编码
- Unicode 字符编码表|汉字Unicode编码的区间为:0x4E00→0x9FA5
- 汉字的动态编码与显示方案
- 关于各种编码问题,汉字处理的一点小总结
- lua utf-8编码的汉字
- python获取汉字编码的int形式
- Android- Unicode编码 和 汉字转换( java实现 , javascript实现)
- 将汉字转化为unicode编码
- js参数不要直接传汉字,防止编码错误,转换成UniCode编码
- 用unescape反编码得出汉字
- 有关汉字编码、拼音输入法 大搜罗
- .Net(c#)汉字和Unicode编码互相转换实例
- mysql 5.5.15编码导致数据库中写入汉字出错的解决方法
- 还是编码 汉字(GB2312和GBK)的ASCII码对照表
- 文字编码 ASCII 汉字GB2312 UTF-8解析
- Unicode 字符编码表|汉字Unicode编码的区间为:0x4E00→0x9FA5
- iOS把字符串汉字转换成UTF-8编码
- QT unicode编码转汉字
- js 将汉字转化成unicode 16 编码 简单例子
- 查询任意汉字的Unicode编码,UTF8编码,GB2312编码,GBK编码