以UTF-8字符串打印字符数

时间:2012-04-10 23:33:49

标签: utf-8 lua

例如:

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

输出:

3   6

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

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:3)

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

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

输出:3 3

答案 2 :(得分:2)

你没有。

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

答案 3 :(得分:0)

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