Ali*_*Ali 10 string unicode lua arabic
在Lua语言中,当我想获得单个阿拉伯字母(例如"?")的长度时,答案就是2!
防爆.
local letter = "?"
print( letter:len() )
Run Code Online (Sandbox Code Playgroud)
输出: 2
我使用时会出现同样的问题(string.sub(a,b)).如果我想打印阿拉伯语单词的第一个字母,我不能说(string.sub(1,1).
防爆.
local word_1 = "????"
print( word_1:sub(1,2) )
Run Code Online (Sandbox Code Playgroud)
输出: ?
如你所见,我把第二个参数(2)不是(1)来得到正确的答案.
如果我把第一个参数1给出答案将是:
print( word_1:sub(1,1) )
Run Code Online (Sandbox Code Playgroud)
输出: Ù
为什么Lua将单个阿拉伯字母的长度计为两个?
有没有办法获得正确的长度,即1?
Yu *_*Hao 15
Lua是8位清洁.
换句话说,Lua字符串是一个字节序列,它不支持内部Unicode.阿拉伯字母"?"有2个字节,因此Lua将其视为长度为2的字符串.
您需要使用特殊技巧来操作Unicode,例如,假设使用UTF-8,您可以使用此片段来计算字符串的长度(Referece:Lua Unicode):
local _, count = string.gsub(unicode_string, "[^\128-\193]", "")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1496 次 |
| 最近记录: |