2012-04-10 11 views

Antwort

6

Wenn Sie in Lua Unicode/UTF-8 verwenden müssen, müssen Sie externe Bibliotheken verwenden, da Lua nur mit 8-Bit-Strings arbeitet. Eine solche Bibliothek ist slnunicode. Beispielcode, wie die Länge der Zeichenfolge zu berechnen:

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

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

Sie nicht.

Lua ist nicht Unicode-bewusst. Alles, was es sieht, ist eine Bytefolge. Wenn Sie nach der Länge fragen, erhalten Sie die Länge dieser Byte-Zeichenfolge. Wenn Sie Lua für die Interaktion mit Unicode-Zeichenfolgen verwenden möchten, müssen Sie entweder ein Lua-Modul schreiben, das diese Interaktionen implementiert, oder ein solches Modul herunterladen.

+0

Siehe zum Beispiel http://lua-users.org/wiki/ValidateUnicodeString – lhf

0

Eine weitere Alternative besteht darin, die nativen os UTF-8-String-Funktionen zu umschließen und die OS-Funktionen zu verwenden, um das Heavy Lifting durchzuführen. Dies hängt davon ab, welches Betriebssystem Sie verwenden - ich habe dies unter OSX getan und es funktioniert ein Vergnügen. Windows wäre ähnlich. Natürlich öffnet es eine weitere Dose Würmer, wenn Sie nur ein Skript von der Kommandozeile ausführen möchten - abhängig von Ihrer App.

3

In Lua 5.3 können Sie utf8.len verwenden, um die Länge eines UTF-8-String zu erhalten:

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

Ausgang: 3 3

Verwandte Themen