Lua string.match utf - 要求西班牙语字符 - 获得半葡萄牙语

时间:2015-05-14 11:24:45

标签: utf-8 lua pattern-matching

嗨,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

我如何忽略葡萄牙语字符& “¡”(以及我不知道的许多其他人)?

也许这不是最好的方法。我正在尝试建立一个西班牙语标记器。我很惊讶,匹配函数从我的匹配列表中未包含的字符返回一个问号。

1 个答案:

答案 0 :(得分:1)

字符和字节是两个不同的东西。可以使用不同的encodings以各种方式以字节编码字符。一种可能的编码是UTF-8。不幸的是,Lua的string.match几乎不知道关于字符和编码的任何内容,它只适用于字节。

因此,您的脚本不会查找“V”,“c”,“o”,“á”,“é”字符,但对于“\ x56”,“\ x63”,“\ x6F”, “\ xA1”,“\ xA9”,“\ xC3”字节。