Как уже отмечалось, это трудно сказать что вы хотите сделать: , где вы хотите разбить для символов, отличных от ASCII, если расщепления в пробелах не хватает?
Если вы просто хотите, чтобы разделить между отдельными символами для не-ASCII символов, что-то вроде следующего может быть достаточно:
s = "oink barf 頑張っています"
for word in s:gmatch("[\33-\127\192-\255]+[\128-\191]*") do
print (word)
end
производит:
oink
barf
頑
張
っ
て
い
ま
す
Хитрость здесь в том, что в UTF- 8, многобайтовые символы состоят из «свинцового байта» с верхними двумя битами, равными 11
(так \192
– \255
в Lua — запомнить, символ побегов в Лу а - десятичные числа), за которыми следуют ноль или более «конечных байтов» с верхними двумя битами, равными 10
(\128
– \191
в Lua).
Где границы между "словами" на японском языке? Или вам просто нужно разбить эту строку на таблицу отдельных символов, например? {"あ", "い", "う", "え", "お"} – dasblinkenlight
Использование [ICU4Lua] (https://github.com/duncanc/icu4lua/) – daurnimator
ICU использует UTF-16, а не UTF- 8. –