如何在lua中将UTF8字节数组转换为字符串

Ton*_*ony 6 lua bytearray utf-8 unpack

我有一张这样的桌子

table = {57,55,0,15,-25,139,130,-23,173,148,-24,136,158}
Run Code Online (Sandbox Code Playgroud)

它是由php解包函数的utf8编码字节数组

unpack('C*',$str);
Run Code Online (Sandbox Code Playgroud)

如何将其转换为utf-8字符串我可以在lua中读取?

gre*_*olf 5

Lua没有提供直接函数来将数字形式的utf-8字节表转换为utf-8字符串文字.但是在以下帮助下为此编写一些内容很容易string.char:

function utf8_from(t)
  local bytearr = {}
  for _, v in ipairs(t) do
    local utf8byte = v < 0 and (0xff + v + 1) or v
    table.insert(bytearr, string.char(utf8byte))
  end
  return table.concat(bytearr)
end
Run Code Online (Sandbox Code Playgroud)

请注意,lua的标准函数或提供的字符串工具都不是utf-8.如果你尝试print从上面的函数返回utf-8编码的字符串,你会看到一些时髦的符号.如果您需要更广泛的utf-8支持,您可以查看lua wiki中提到的一些库.