例如:
local a = "Lua"
local u = "Луа"
print(a:len(), u:len())
输出:
3 6
如何输出utf-8字符串中的字符数?
答案 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会是类似的。当然,如果您只想从命令行运行脚本,它会打开另一种蠕虫 - 取决于您的应用程序。