2017-07-05 15 views
0

zlibによって解凍され、ログに出力された文字列は、以下の形式です。luaのバイトをutf8にエンコードするには?

{\x22uid\x22:\x22CE57134D17B57E873D7E7434E0E21783\x22.............2\x5Cu0000\x5Cu0000\x22,\x22http://tgs.7477.com/adiframe/ky/01/index.html\x5Cu0000\x5Cu0000\x22,\x22http://s.csbew.com/acookie.html\x5Cu0000\x5Cu0000\x22],\x22ver\x22:\x221\x22}\x0A200 

解凍されたstrをluaで '\ xxx \ u000'のようなものが表示されないようにエンコードする方法は?

+1

をそれはあなたが「通常のように見える」によって何を意味するかは明らかではありません。テキストの塊が何を意味するのかについても明確ではありません。 –

+2

すでに二重引用符が\ x22としてエスケープされているだけで、かなり正常です。全文は '' uid:CE57134D17B57E873D7E7434E0E21783 ''となります。そのヘクスはいくつかのユニークなIDなので、それ以上のデコードは必要ありません。 – Vlad

+0

質問を再編集しますが、今回はそれが明確になることを願っています。 – xunyl

答えて

0

16進数表現から文字を取得するには、このエスケープ解除機能を試してみてください。

function unescape (s) 
     s = string.gsub(s or '', "\\x(%x%x)", function (h) return string.char(tonumber(h,16)) end) 
     return s 
    end 


    local str = [[{\x22uid\x22:\x22CE57134D17B57E873D7E7434E0E21783\x22.............2\x5Cu0000\x5Cu0000\x22,\x22http://tgs.7477.com/adiframe/ky/01/index.html\x5Cu0000\x5Cu0000\x22,\x22http://s.csbew.com/acookie.html\x5Cu0000\x5Cu0000\x22],\x22ver\x22:\x221\x22}\x0A200 ]] 
    print(unescape(str)) 

結果:

{"uid":"CE57134D17B57E873D7E7434E0E21783".............2\u0000\u0000","http://tgs.7477.com/adiframe/ky/01/index.html\u0000\u0000","http://s.csbew.com/acookie.html\u0000\u0000"],"ver":"1"} 
200 
関連する問題