Lua が Unicode を完全にサポートしていないことは知っていましたが、この問題を解決するための回避策が必要ですか? string.reverse はユニコードでは機能しないため、次の例は機能しません
print(string.reverse("أحمد"))
それについて何か助けはありますか?
Corona SDK はエンコーディングに UTF-8 を使用しているようです。
すべてのバイトではなく、文字列内のすべての Unicodeコード ポイントを逆にしたい場合は、そのコードを使用できます。
function utf8reverse(str)
return str:gsub("([\194-\244][\128-\191]+)", string.reverse):reverse()
end
print(utf8reverse("أحمد"))
トリックは次のとおりです。マルチバイト Unicode コード ポイントは常にバイト11xx xxxxで始まり、1 つまたは複数のバイト10xx xxxxが続きます。最初のステップは、各マルチバイト コード ポイントのすべてのバイトを反転し、次にすべてのバイトを反転することです。
注: Unicode 文字が複数のコード ポイントで構成されている場合、その単純なトリックは機能しません。完全なサポートには、対処するための大きな Unicode データベースが必要になります。