我想将字符转换为数字代码,所以我尝试了string.byte(“å”)。但是,对于这些类型的字符,string.byte()的返回值似乎是195;
以任何方式获取非ascii字符的数字代码,如:?
à,á,â,ã,ä,å
我正在使用纯粹的lua;
答案 0 :(得分:3)
Lua认为字符串是一个字节序列,但Unicode字符可能包含多个字节。
假设字符串具有有效的UTF-8编码,您可以使用模式"[\0-\x7F\xC2-\xF4][\x80-\xBF]*"
来匹配单个UTF-8字节序列。 (在Lua 5.1中,使用"[%z\1-\127\194-\244][\128-\191]*"
),然后获取其数字代码:
local str = "à,á,â,ã,ä,å"
for c in str:gmatch("[\0-\x7F\xC2-\xF4][\x80-\xBF]*") do
print(c:byte(1, -1))
end
输出:
195 160
44
195 161
44
195 162
44
195 163
44
195 164
44
195 165
请注意,44
是逗号的编码。