私はlibを調べました。すべて127バイト以上に強制的にエンコードするため、UTFは別の文字に分割されます。これは組み込みの.registerCode
メカニズムを使用した後に行います。したがって、オーバーライドすることさえできません。
あなたには、いくつかの複雑なデータ構造をエンコードする必要がある場合XmlLua
がどこかに宣言することによって、文字列化終了後、あなただけのすべてのそれらの実体置換をアンロールすることができます
local high_ascii_unroll = {}
for code = 128, 255 do
high_ascii_unroll['&#' .. code .. ';'] = string.char(code)
end
と、最終的な文字列にgsub
を使用して:
local doc = xml.new("outer")
doc.version = "2.0"
local inner = xml.new("inner")
inner.id = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫьЭЮЯ"
table.insert(doc, inner)
local encoded = xml.str(doc):gsub('&#%d+;', high_ascii_unroll)
-- <outer version="2.0">
-- <inner id="АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫьЭЮЯ" />
-- </outer>
詳細を記入してください。少なくとも呼び出す関数、パラメーター、期待される結果、取得した結果。 – kikito
「本当のシンボル」はどういう意味ですか? –
あなたのDBではどのようなエンコーディングが使用されており、どのようなエンコーディングをXMLヘッダーに入れていますか? 文字列をXMLに書き込む前に変更しますか? –