在Corona SDK中如何反转unicode字符串?

时间:2012-10-28 18:04:56

标签: unicode lua corona

我知道Lua并不完全支持unicode,但应该有一个解决方法来解决这个问题? string.reverse将无法使用unicode,因此以下示例将无法正常工作

  print(string.reverse("أحمد"))

对此有何帮助?

1 个答案:

答案 0 :(得分:4)

Corona SDK似乎使用UTF-8作为编码。

如果要反转字符串中的所有Unicode 代码点,而不是所有字节,则可以使用该代码:

function utf8reverse(str)
  return str:gsub("([\194-\244][\128-\191]+)", string.reverse):reverse()
end

print(utf8reverse("أحمد"))

技巧如下:多字节Unicode代码点始终以字节 11xx xxxx 开头,后跟一个或多个字节 10xx xxxx 。第一步是反转每个多字节代码点上的所有字节,然后反转所有字节。

注意:当Unicode字符由多个代码点组成时,这个简单的技巧将不起作用。完全支持需要一个大的Unicode数据库来处理。