嗨,Lua中的以下代码:
letters = "Vocéá"
print(string.match("¡Você","["..letters.."]+"))
返回:
�Voc�
如果我用常规e替换é并摆脱á然后我得到“Voc”。似乎á干扰¡,é与ê。可能是他们共享一个字节? 我不是编码专家,但这些是utf16值,utf8二进制文件:
á(feff00e1) 1100 0011 1010 0001
¡(feff00a1) 1100 0010 1010 0001
ê(feff00ea) 1100 0011 1010 1010
é(feff00e9) 1100 0011 1010 1001
我如何忽略葡萄牙语字符& “¡”(以及我不知道的许多其他人)?
也许这不是最好的方法。我正在尝试建立一个西班牙语标记器。我很惊讶,匹配函数从我的匹配列表中未包含的字符返回一个问号。
答案 0 :(得分:1)
字符和字节是两个不同的东西。可以使用不同的encodings以各种方式以字节编码字符。一种可能的编码是UTF-8。不幸的是,Lua的string.match几乎不知道关于字符和编码的任何内容,它只适用于字节。
因此,您的脚本不会查找“V”,“c”,“o”,“á”,“é”字符,但对于“\ x56”,“\ x63”,“\ x6F”, “\ xA1”,“\ xA9”,“\ xC3”字节。