如何将Python中的双UTF-8解码器代码转换为Lua

问题描述 投票:3回答:1

我有这个旧代码片段,(显然)将经过双重编码的UTF-8文本解码回普通的UTF-8:

# Run with python3!
import codecs
import sys
s=codecs.open('doubleutf8.dat', 'r', 'utf-8').read()
sys.stdout.write(
                s
                .encode('raw_unicode_escape')
                .decode('utf-8')
        )

我需要将其翻译为Lua,并模仿所有可能的解码副作用(如果有)。

局限性:我可以使用任何可用的Lua模块进行UTF-8处理,但最好使用稳定的模块,并带有LuaRocks支持。我不会使用Lupa或其他Lua-Python桥接解决方案,也不会调用os.execute()来调用Python。

python unicode utf-8 lua
1个回答
3
投票

您可以使用lua-iconv,将Lua绑定到iconv library。有了它,您可以根据需要在字符编码之间进行尽可能多的转换。

LuaRocks中也可用。

Edit:使用this answer,我已经能够使用以下Lua代码正确解码数据:

require 'iconv'
-- convert from utf8 to latin1
local decoder = iconv.new('latin1', 'utf8')
local data = io.open('doubleutf8.dat'):read('*a')
-- decodedData is encoded in utf8
local decodedData = decoder:iconv(data)
-- if your terminal understands utf8, prints "нижний новгород"
-- if not, you can further convert it from utf8 to any encoding, like KOI8-R
print(decodedData)
© www.soinside.com 2019 - 2024. All rights reserved.