Lua 支持 Unicode 吗?

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

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

看起来它确实支持 Unicode,但有限制。我只是不理解,这个限制是否很重要或关键,或者不是什么大问题?

原文链接 https://stackoverflow.com/questions/2497800

点赞
stackoverflow用户241462
stackoverflow用户241462

它支持在 Lua 字符串中使用 Unicode。具体取决于您打算做什么,但大多数限制都可以通过使用自己的函数扩展 Lua 轻松解决。

2010-03-23 05:43:09
stackoverflow用户137317
stackoverflow用户137317

如果你想要一个简短的答案,就像链接的网站上所说的那样,答案是“是和否”。

Lua支持Unicode的方式是支持在字符串中指定、存储和查询任意字节值,因此你可以在Lua字符串中存储任何类型的Unicode编码编码的字符串。

不支持的是按Unicode字符迭代,没有标准函数来获取Unicode字符的字符串长度等。因此,像Python中可用的高级Unicode支持(例如长度、小写->大写转换、任意编码的编码等)是不可用的。

2010-03-24 18:50:08
stackoverflow用户3102
stackoverflow用户3102

Lua 不支持 unicode(除了在字符串中接受任何字节值之外)。然而,slnunicode 库拥有许多 unicode 字符串功能,例如 unicode.utf8.len

(注:这个回答完全抄袭了 grom 在另一个问题的评论——我只是认为它值得有自己的答案。)

Lua 不支持 unicode(除了在字符串中接受任何字节值之外)。然而,[slnunicode](http://luaforge.net/projects/sln/) 库拥有许多 unicode 字符串功能,例如 `unicode.utf8.len`。 

(注:这个回答完全抄袭了 grom 在另一个问题的评论——我只是认为它值得有自己的答案。)
2010-10-31 14:00:18
stackoverflow用户284969
stackoverflow用户284969

你可以将 Unicode 字符串以 utf8 的形式存储在 Lua 中,并像任何字符串一样使用它们。

但是,Lua 不提供对此类字符串进行更高级别的“ Unicode 意识”操作的默认支持,例如计算字符数和大小写转换等。这种缺失是否重要取决于你打算如何使用这些字符串。

根据你的使用情况,可能有以下方法:

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

  2. 由于 utf8 的巧妙设计,可以对包含 utf8 的字符串进行某些类型的字符串操作,并且不需要特别注意就能得到正确的结果。

    例如,你可以附加字符串,拆分它们以 ASCII 字符为界,等等。例如,如果你有一个字符串 "開発.txt",并在其中使用 string.find (string_var, ".") 搜索“.”,然后使用普通的 string.sub 函数将其拆分为 "開発"".txt",这些结果字符串即使不使用任何“ Unicode 意识”算法也是正确的 utf8 字符串。

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

  3. 一些 utf8 意识的操作非常简单,很容易编写自己的函数来执行它们。

    例如,要计算字符串中的 Unicode 字符数,请计算高位为零的字符数(ASCII 字符)和前两个位为 11 的字符数(非 ASCII 字符的“ leading bytes”);长度是两者的总和。

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

2011-11-02 08:09:22
stackoverflow用户1009479
stackoverflow用户1009479

Lua 5.3

现在,Lua 5.3已经发布。它带有一个基本的UTF-8库

您可以使用utf8库来处理与UTF-8编码相关的操作,比如获取UTF-8字符串的长度(而不是string.len返回的字节数),匹配每个字符(而不是字节),等等。

它并没有提供原生的支持,例如“这个字符是中文字符吗?”

2015-01-14 10:52:52