Как перевести код двойного UTF-8-декодера в Python на Lua - PullRequest
3 голосов
/ 17 февраля 2011

У меня есть этот устаревший фрагмент кода, который (по-видимому) декодирует дважды кодированный текст 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.

1 Ответ

3 голосов
/ 17 февраля 2011

Вы можете использовать lua-iconv , привязку Lua к библиотеке iconv .С его помощью вы можете конвертировать между кодировками символов сколько захотите.

Он также доступен в LuaRocks .

Редактировать : используя этот ответ Мне удалось правильно декодировать данные, используя следующий код 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...