2012-04-10 94 views
3

例如:打印數量

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

輸出:

3 6 

如何在UTF-8字符串我的字符輸出多少?

回答

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 
2

你不知道。

Lua不支持Unicode。它看到的只是一串字節。當你詢問長度時,它會給你該字節串的長度。如果您想使用Lua以某種方式與Unicode字符串進行交互,則必須編寫一個實現這些交互的Lua模塊或下載此類模塊。

+0

請參閱http://lua-users.org/wiki/ValidateUnicodeString – lhf 2012-04-11 01:12:09

0

另一種替代方法是包裝本機操作系統的UTF-8字符串函數並使用os函數完成繁重的工作。這取決於你使用哪一種操作系統 - 我已經在OSX上完成了這個工作,並且它可以工作。 Windows將是類似的。當然,如果你只是想從命令行運行一個腳本,它會打開另一個蠕蟲 - 取決於你的應用程序。

3

在Lua中5.3,你可以用utf8.len得到一個UTF-8字符串的長度:

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

輸出:3 3