根据下面的链接,我对 Lua 编程语言是否支持 Unicode 感到困惑。
http://lua-users.org/wiki/LuaUnicode
看起来确实如此,但有局限性。我根本不明白,这个限制是大/关键还是没什么大不了的?
最佳答案
您当然可以在 lua 中存储 unicode 字符串,如 utf8。您可以像使用任何字符串一样使用它们。
然而,Lua 并不为此类字符串上的高级“unicode 感知”操作提供任何默认支持,例如,计算字符串长度(以字符为单位)、从小写到大写的转换等。这种缺乏对于以下情况是否有意义:您实际上取决于您打算如何处理这些字符串。
可能的方法,取决于您的用途:
如果您只想输入/输出/存储字符串,并且通常将它们用作“整个单元”(用于表索引等),则可能根本不需要任何特殊处理。在这种情况下,您只需将这些字符串视为二进制 blob。
由于 utf8 的巧妙设计,可以对包含 utf8 的字符串进行某些类型的字符串操作,并且无需特别注意即可产生正确的结果。
例如,您可以附加字符串、在 ascii 字符之前/之后将它们分开等。例如,如果您有一个字符串
"开発.txt"
并且您搜索“.”使用string.find (string_var, ".")
找到该字符串,然后使用普通的string.sub
函数将其拆分为"开発"
和".txt"
,即使您没有使用任何类型的“unicode-aware”算法,这些结果字符串也将是正确的 utf8 字符串。类似地,您可以仅对字符串中的 ASCII 字符(高位为零的字符)进行大小写转换,并将其余字符串视为二进制,而不会搞砸它们。
一些支持 utf8 的操作非常简单,只需编写自己的函数即可轻松完成这些操作。
例如,要计算字符串的 unicode 字符长度,只需计算高位 0(ASCII 字符)的字符数,以及前两位
11 的字符数
(非 ASCII 字符的“前导字节”);长度是两者之和。对于更复杂的操作(例如,非 ASCII 字符的大小写转换等),您可能必须使用 Lua unicode 库,例如(前面提到的)Lua-users Unicode page 上的库。
关于unicode - Lua支持Unicode吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2497800/