Lua string.match utf - 询问西班牙语字符 - 得到一半葡萄牙语
Lua string.match utf - asking for spanish character - getting half portuguese
你好 Lua 中的以下代码:
letters = "Vocéá"
print(string.match("¡Você","["..letters.."]+"))
returns:
�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
我如何忽略葡萄牙语字符和“¡”(以及许多我不知道的其他字符)?
也许这不是最好的方法。我正在尝试构建一个西班牙语分词器。令我惊讶的是,匹配函数 returns 来自未包含在我的匹配列表中的字符的问号。
字符和字节是两个不同的东西。字符可以使用不同的 encodings 以各种方式以字节为单位进行编码。一种可能的编码是 UTF-8。不幸的是 Lua 的 string.match 对字符和编码几乎一无所知,它只适用于字节。
所以你的脚本不是在寻找 "V"、"c"、"o"、“á”、“é”字符,而是在寻找“\x56”、“\ x63", "\x6F", "\xA1", "\xA9", "\xC3" 字节。
你好 Lua 中的以下代码:
letters = "Vocéá"
print(string.match("¡Você","["..letters.."]+"))
returns:
�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
我如何忽略葡萄牙语字符和“¡”(以及许多我不知道的其他字符)?
也许这不是最好的方法。我正在尝试构建一个西班牙语分词器。令我惊讶的是,匹配函数 returns 来自未包含在我的匹配列表中的字符的问号。
字符和字节是两个不同的东西。字符可以使用不同的 encodings 以各种方式以字节为单位进行编码。一种可能的编码是 UTF-8。不幸的是 Lua 的 string.match 对字符和编码几乎一无所知,它只适用于字节。
所以你的脚本不是在寻找 "V"、"c"、"o"、“á”、“é”字符,而是在寻找“\x56”、“\ x63", "\x6F", "\xA1", "\xA9", "\xC3" 字节。