でのunicharを表現する方法何である「0」:私は次のPython値、Unicodeの文字を持っている必要がある場合は、LUA
>>> unichr(0)
u'\x00'
私はLuaの中でそれを定義できますか?
でのunicharを表現する方法何である「0」:私は次のPython値、Unicodeの文字を持っている必要がある場合は、LUA
>>> unichr(0)
u'\x00'
私はLuaの中でそれを定義できますか?
どの程度
function unichr(ord)
if ord == nil then return nil end
if ord < 32 then return string.format('\\x%02x', ord) end
if ord < 126 then return string.char(ord) end
if ord < 65539 then return string.format("\\u%04x", ord) end
if ord < 1114111 then return string.format("\\u%08x", ord) end
end
これはありません。
ルアにはUnicode値の概念がありません。 LuaにはUnicodeの概念がありませんにはすべてがあります。すべてのLua文字列は "文字"の8ビットシーケンスであり、すべてのLua文字列関数はそれらをそのまま扱います。 Luaは文字列をUnicodeエンコーディングとして扱いません。それらは単なる一連のバイトです。
文字列に任意の数値を挿入できます。例えば:
は\
表記は255以下でなければならない3桁の数字(またはエスケープ文字のうちの1つ)、続いて
"AB"
Luaがある:
"\065\066"
と等価です埋め込まれた文字列を完全に扱うことができます。\000
文字。
しかし、UnicodeコードポイントをLua文字列に直接挿入することはできません。コードポイントをUTF-8に分解し、上記のメカニズムを使用してコードポイントを文字列に挿入することができます。たとえば:
"x\226\131\151"
これはUnicode combining above arrow character続いx
文字です。
しかし、Lua関数は実際にUTF-8を理解していないので、UTF-8文字列を期待する関数を公開する必要があります。
ネイティブLuaはUnicodeを直接サポートまたは処理しませんが、その文字列は実際にはASCII文字を保持する任意のバイトのバッファです。文字列には任意のバイト値が含まれる可能性があるため、ネイティブ文字列の上にUnicodeのサポートを構築するのは比較的簡単です。バイトバッファの目的が不十分であることが判明した場合は、userdata
オブジェクトを使用してオブジェクトを保持し、適切なメタテーブルを追加して、作成方法、目的のエンコーディングへの変換、連結、反復、および必要なものは他にあります。
LuaプログラムでUnicodeを処理するさまざまな方法について説明しているa page at the Lua User's Wikiがあります。より近代的な答えを
、Luaの5.3は今utf8.char
があります
はゼロ以上の整数を受け取り、それに対応するUTF-8バイトシーケンスにそれぞれ1を変換し、これらすべてのシーケンスを連結した文字列を返します。
これは自分の質問にどう答えているのか分かりません。実際には、その前に '\ u'を付けて16進数をフォーマットする方法を尋ねていましたか? –
質問のタイトル - "lucのunicharを表現する方法は何ですか?"実際には、同等のpythonスクリプトと同じものを出力するためにはlua関数が必要でした。明らかに、これだけで十分です。 –