Как уже отмечали другие, трудно сказать, что вы хотите сделать: , где вы хотите разделить для символов, не относящихся к 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 - помните, экранирование символов в Lua является десятичным), за которым следует нольили более "завершающих байтов" с двумя старшими битами, равными 10
(\128
- \191
в Lua).