LINUX.ORG.RU

lua vs. non-unicode string


0

1

суть такова.

есть некая xml'ка, выдергиваемая с сервера lua-скриптом. в ней есть несколько строк кириллицей. кириллица та кодировки cp1251 и еще url-encoded.

url decode делаю вот так:

function url_decode(str)
    str = string.gsub (str, "+", " ")
    str = string.gsub (str, "%%(%x%x)",
        function(h) return string.char(tonumber(h,16)) end)
    str = string.gsub (str, "\r\n", "\n")
    return str    
end         

но, как из cp1251 преобразовать строку в православный UTF-8 ? в интернетах нашел только отсылки к какому-то левому классу string.Str.

подскажите плз, есть ли более правильные способы перекодировки?

★★★★★

Ответ на: комментарий от isden

Все символы меньше 0x80 - просто копируй, остальные конвертируй с помощью таблицы.

anonymous ()

Насколько мне известно, у Lua (5.1, по крайней мере) такой встроенной фичи нет. Более того, могут возникнуть проблемы с обработкой UTF-8-строк, содержащих многобайтовые символы, особенно при операции string.gsub и прочих заменах. Поскольку все операции там побайтовые. Возможно, я и ошибаюсь.

Вот есть ссылка с объяснением и ссылками на разные библиотеки: http://lua-users.org/wiki/LuaUnicode

Впрочем, если нужно просто преобразовать, можно сделать простой таблицей.

proud_anon ★★★★★ ()

всем спасибо.

isden ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.