Actual fix for unicode not showing up correctly from xkcd

This commit is contained in:
EyeZiS 2016-09-04 21:04:45 +02:00
parent ace1464f54
commit e4f42bacc3
2 changed files with 13 additions and 2 deletions

View File

@ -40,10 +40,10 @@ function xkcd:action(msg, config)
else else
local data = JSON.decode(jstr) local data = JSON.decode(jstr)
local output = string.format('*%s (*[%s](%s)*)*\n_%s_', local output = string.format('*%s (*[%s](%s)*)*\n_%s_',
data.safe_title:gsub('*', '*\\**'), utilities.fix_UTF8(data.safe_title):gsub('*', '*\\**'),
data.num, data.num,
data.img, data.img,
data.alt:gsub('_', '_\\__') utilities.fix_UTF8(data.alt):gsub('_', '_\\__')
) )
utilities.send_message(msg.chat.id, output, false, nil, true) utilities.send_message(msg.chat.id, output, false, nil, true)
end end

View File

@ -321,4 +321,15 @@ utilities.style.enquote = function(title, body)
return '*' .. title:gsub('*', '\\*') .. ':*\n"' .. utilities.md_escape(body) .. '"' return '*' .. title:gsub('*', '\\*') .. ':*\n"' .. utilities.md_escape(body) .. '"'
end end
-- Converts a string back into "proper" utf-8 from an ascii representation of utf-8
-- it is only useful for fixing improper encoding caused by bad JSON escaping
function utilities.fix_UTF8(str)
local t = {}
for p, c in utf8.codes(str) do
table.insert(t, string.char(c))
end
return table.concat(t)
end
return utilities return utilities