unicode - Lua支持Unicode吗?

标签 unicode programming-languages lua

根据下面的链接,我对 Lua 编程语言是否支持 Unicode 感到困惑。

http://lua-users.org/wiki/LuaUnicode

看起来确实如此,但有局限性。我根本不明白,这个限制是大/关键还是没什么大不了的?

最佳答案

您当然可以在 lua 中存储 unicode 字符串,如 utf8。您可以像使用任何字符串一样使用它们。

然而,Lua 并不为此类字符串上的高级“unicode 感知”操作提供任何默认支持,例如,计算字符串长度(以字符为单位)、从小写到大写的转换等。这种缺乏对于以下情况是否有意义:您实际上取决于您打算如何处理这些字符串。

可能的方法,取决于您的用途:

  1. 如果您只想输入/输出/存储字符串,并且通常将它们用作“整个单元”(用于表索引等),则可能根本不需要任何特殊处理。在这种情况下,您只需将这些字符串视为二进制 blob。

  2. 由于 utf8 的巧妙设计,可以对包含 utf8 的字符串进行某些类型的字符串操作,并且无需特别注意即可产生正确的结果。

    例如,您可以附加字符串、在 ascii 字符之前/之后将它们分开等。例如,如果您有一个字符串 "开発.txt" 并且您搜索“.”使用 string.find (string_var, ".") 找到该字符串,然后使用普通的 string.sub 函数将其拆分为 "开発"".txt",即使您没有使用任何类型的“unicode-aware”算法,这些结果字符串也将是正确的 utf8 字符串。

    类似地,您可以仅对字符串中的 ASCII 字符(高位为零的字符)进行大小写转换,并将其余字符串视为二进制,而不会搞砸它们。

  3. 一些支持 utf8 的操作非常简单,只需编写自己的函数即可轻松完成这些操作。

    例如,要计算字符串的 unicode 字符长度,只需计算高位 0(ASCII 字符)的字符数,以及前两位 11 的字符数(非 ASCII 字符的“前导字节”);长度是两者之和。

  4. 对于更复杂的操作(例如,非 ASCII 字符的大小写转换等),您可能必须使用 Lua unicode 库,例如(前面提到的)Lua-users Unicode page 上的库。

关于unicode - Lua支持Unicode吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2497800/

相关文章:

c - 是否有一种标准方法可以使用 Unicode 字符串文件路径执行 fopen?

c - 运行时检查失败 #2 - 变量 'start' 周围的堆栈已损坏

programming-languages - 使用哪种编程范例?

programming-languages - "ctr"文件扩展名是什么?

java - Java 如何选择调用哪个重载函数?

Lua相当于virtualenv?

function - 动态定义LUA函数的正确方法

security - Lua 中有没有办法避免这个安全问题?

c# - 使用 C# 将 UCS-2 字符转换为 UTF-8

python - 打印 unicode 字符串与打印每个字符,有什么不匹配的地方?