如何将Python中的双UTF-8解码器代码翻译成Lua

我有一个旧代码片段,它(显然)解码双重编码的UTF-8文本以恢复正常的UTF-8:

#用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,并模仿所有可能的解码的副作用(如果有)。

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

原文链接 https://stackoverflow.com/questions/5032344

点赞
stackoverflow用户221509
stackoverflow用户221509

你可以使用lua-iconv,它是iconv库的Lua绑定。使用它可以在不同的字符编码之间任意转换。

该库也可以在LuaRocks中获取。

编辑:使用这个回答,我已经能够使用以下Lua代码正确解码数据:

require 'iconv'
-- 从utf8转换为latin1
local decoder = iconv.new('latin1', 'utf8')
local data = io.open('doubleutf8.dat'):read('*a')
-- 解码后的数据使用utf8编码
local decodedData = decoder:iconv(data)
-- 如果终端支持utf8,输出 "нижний новгород"
-- 否则,你可以进一步将其从utf8转换为任何编码,比如KOI8-R
print(decodedData)
2011-02-17 19:20:54