4

例如:

local a = "Lua"
local u = "Луа"
print(a:len(), u:len())

输出:

3   6

如何输出 utf-8 字符串中的字符数?

4

4 回答 4

6

如果需要在 Lua 中使用 Unicode/UTF-8,则需要使用外部库,因为 Lua 仅适用于 8 位字符串。一个这样的库是slnunicode。示例代码如何计算字符串的长度:

local unicode = require "unicode"
local utf8 = unicode.utf8

local a = "Lua"
local u = "Луа"
print(utf8.len(a), utf8.len(u)) --> 3    3
于 2012-04-11T07:33:53.623 回答
3

在 Lua 5.3 中,您可以使用utf8.len来获取 UTF-8 字符串的长度:

local a = "Lua"
local u = "Луа"
print(utf8.len(a), utf8.len(u))

输出:3 3

于 2015-01-14T11:40:39.680 回答
2

你没有。

Lua 不支持 Unicode。它所看到的只是一串字节。当您询问长度时,它会为您提供该字节字符串的长度。如果您想使用 Lua 以某种方式与 Unicode 字符串进行交互,您必须编写一个实现这些交互的 Lua 模块或下载这样的模块。

于 2012-04-11T00:16:08.863 回答
0

另一种选择是包装本机 os UTF-8 字符串函数并使用 os 函数来完成繁重的工作。这取决于您使用的操作系统——我已经在 OSX 上完成了这项工作,而且效果很好。Windows 将是类似的。当然,如果您只想从命令行运行脚本,它会打开另一个蠕虫 - 取决于您的应用程序。

于 2012-04-11T04:42:57.780 回答