mirror of
https://github.com/lunarmodules/lua-iconv.git
synced 2025-06-23 04:34:33 +02:00
Lua 5.2 brings some API changes; This commit converts the library to the new version and removes the backward compatibility code between Lua 5.0 and 5.1 (which makes no sense anymore).
100 lines
5.6 KiB
Lua
100 lines
5.6 KiB
Lua
local iconv = require("iconv")
|
|
|
|
-- Set your terminal encoding here
|
|
-- local termcs = "iso-8859-1"
|
|
local termcs = "utf-8"
|
|
|
|
local iso88591 = "\65\111\32\108\111\110\103\101\44\32\97\111\32\108\117"
|
|
.. "\97\114\10\78\111\32\114\105\111\32\117\109\97\32\118\101\108\97\10\83"
|
|
.. "\101\114\101\110\97\32\97\32\112\97\115\115\97\114\44\10\81\117\101\32"
|
|
.. "\233\32\113\117\101\32\109\101\32\114\101\118\101\108\97\10\10\78\227"
|
|
.. "\111\32\115\101\105\44\32\109\97\115\32\109\117\101\32\115\101\114\10"
|
|
.. "\84\111\114\110\111\117\45\115\101\45\109\101\32\101\115\116\114\97\110"
|
|
.. "\104\111\44\10\69\32\101\117\32\115\111\110\104\111\32\115\101\109\32"
|
|
.. "\118\101\114\10\79\115\32\115\111\110\104\111\115\32\113\117\101\32\116"
|
|
.. "\101\110\104\111\46\10\10\81\117\101\32\97\110\103\250\115\116\105\97"
|
|
.. "\32\109\101\32\101\110\108\97\231\97\63\10\81\117\101\32\97\109\111\114"
|
|
.. "\32\110\227\111\32\115\101\32\101\120\112\108\105\99\97\63\10\201\32\97"
|
|
.. "\32\118\101\108\97\32\113\117\101\32\112\97\115\115\97\10\78\97\32\110"
|
|
.. "\111\105\116\101\32\113\117\101\32\102\105\99\97\10\10\32\32\32\32\45"
|
|
.. "\45\32\70\101\114\110\97\110\100\111\32\80\101\115\115\111\97\10"
|
|
|
|
local utf8 = "\65\111\32\108\111\110\103\101\44\32\97\111\32\108\117\97\114"
|
|
.. "\10\78\111\32\114\105\111\32\117\109\97\32\118\101\108\97\10\83\101\114"
|
|
.. "\101\110\97\32\97\32\112\97\115\115\97\114\44\10\81\117\101\32\195\169\32"
|
|
.. "\113\117\101\32\109\101\32\114\101\118\101\108\97\10\10\78\195\163\111\32"
|
|
.. "\115\101\105\44\32\109\97\115\32\109\117\101\32\115\101\114\10\84\111\114"
|
|
.. "\110\111\117\45\115\101\45\109\101\32\101\115\116\114\97\110\104\111\44"
|
|
.. "\10\69\32\101\117\32\115\111\110\104\111\32\115\101\109\32\118\101\114\10"
|
|
.. "\79\115\32\115\111\110\104\111\115\32\113\117\101\32\116\101\110\104\111"
|
|
.. "\46\10\10\81\117\101\32\97\110\103\195\186\115\116\105\97\32\109\101\32"
|
|
.. "\101\110\108\97\195\167\97\63\10\81\117\101\32\97\109\111\114\32\110\195"
|
|
.. "\163\111\32\115\101\32\101\120\112\108\105\99\97\63\10\195\137\32\97\32"
|
|
.. "\118\101\108\97\32\113\117\101\32\112\97\115\115\97\10\78\97\32\110\111"
|
|
.. "\105\116\101\32\113\117\101\32\102\105\99\97\10\10\32\32\32\32\45\45\32"
|
|
.. "\70\101\114\110\97\110\100\111\32\80\101\115\115\111\97\10"
|
|
|
|
local utf16 = "\255\254\65\0\111\0\32\0\108\0\111\0\110\0\103\0\101\0\44\0\32"
|
|
.. "\0\97\0\111\0\32\0\108\0\117\0\97\0\114\0\10\0\78\0\111\0\32\0\114\0\105"
|
|
.. "\0\111\0\32\0\117\0\109\0\97\0\32\0\118\0\101\0\108\0\97\0\10\0\83\0\101"
|
|
.. "\0\114\0\101\0\110\0\97\0\32\0\97\0\32\0\112\0\97\0\115\0\115\0\97\0\114"
|
|
.. "\0\44\0\10\0\81\0\117\0\101\0\32\0\233\0\32\0\113\0\117\0\101\0\32\0\109"
|
|
.. "\0\101\0\32\0\114\0\101\0\118\0\101\0\108\0\97\0\10\0\10\0\78\0\227\0\111"
|
|
.. "\0\32\0\115\0\101\0\105\0\44\0\32\0\109\0\97\0\115\0\32\0\109\0\117\0\101"
|
|
.. "\0\32\0\115\0\101\0\114\0\10\0\84\0\111\0\114\0\110\0\111\0\117\0\45\0\115"
|
|
.. "\0\101\0\45\0\109\0\101\0\32\0\101\0\115\0\116\0\114\0\97\0\110\0\104\0"
|
|
.. "\111\0\44\0\10\0\69\0\32\0\101\0\117\0\32\0\115\0\111\0\110\0\104\0\111"
|
|
.. "\0\32\0\115\0\101\0\109\0\32\0\118\0\101\0\114\0\10\0\79\0\115\0\32\0\115"
|
|
.. "\0\111\0\110\0\104\0\111\0\115\0\32\0\113\0\117\0\101\0\32\0\116\0\101\0"
|
|
.. "\110\0\104\0\111\0\46\0\10\0\10\0\81\0\117\0\101\0\32\0\97\0\110\0\103\0"
|
|
.. "\250\0\115\0\116\0\105\0\97\0\32\0\109\0\101\0\32\0\101\0\110\0\108\0\97"
|
|
.. "\0\231\0\97\0\63\0\10\0\81\0\117\0\101\0\32\0\97\0\109\0\111\0\114\0\32"
|
|
.. "\0\110\0\227\0\111\0\32\0\115\0\101\0\32\0\101\0\120\0\112\0\108\0\105\0"
|
|
.. "\99\0\97\0\63\0\10\0\201\0\32\0\97\0\32\0\118\0\101\0\108\0\97\0\32\0\113"
|
|
.. "\0\117\0\101\0\32\0\112\0\97\0\115\0\115\0\97\0\10\0\78\0\97\0\32\0\110"
|
|
.. "\0\111\0\105\0\116\0\101\0\32\0\113\0\117\0\101\0\32\0\102\0\105\0\99\0"
|
|
.. "\97\0\10\0\10\0\32\0\32\0\32\0\32\0\45\0\45\0\32\0\70\0\101\0\114\0\110"
|
|
.. "\0\97\0\110\0\100\0\111\0\32\0\80\0\101\0\115\0\115\0\111\0\97\0\10\0"
|
|
|
|
-- Bizarre EBCDIC-CP-ES encoding.
|
|
local ebcdic = "\193\150\64\147\150\149\135\133\107\64\129\150\64\147\164\129"
|
|
.. "\153\37\213\150\64\153\137\150\64\164\148\129\64\165\133\147\129\37\226"
|
|
.. "\133\153\133\149\129\64\129\64\151\129\162\162\129\153\107\37\216\164\133"
|
|
.. "\64\81\64\152\164\133\64\148\133\64\153\133\165\133\147\129\37\37\213\70"
|
|
.. "\150\64\162\133\137\107\64\148\129\162\64\148\164\133\64\162\133\153\37"
|
|
.. "\227\150\153\149\150\164\96\162\133\96\148\133\64\133\162\163\153\129\149"
|
|
.. "\136\150\107\37\197\64\133\164\64\162\150\149\136\150\64\162\133\148\64"
|
|
.. "\165\133\153\37\214\162\64\162\150\149\136\150\162\64\152\164\133\64\163"
|
|
.. "\133\149\136\150\75\37\37\216\164\133\64\129\149\135\222\162\163\137\129"
|
|
.. "\64\148\133\64\133\149\147\129\72\129\111\37\216\164\133\64\129\148\150"
|
|
.. "\153\64\149\70\150\64\162\133\64\133\167\151\147\137\131\129\111\37\113"
|
|
.. "\64\129\64\165\133\147\129\64\152\164\133\64\151\129\162\162\129\37\213"
|
|
.. "\129\64\149\150\137\163\133\64\152\164\133\64\134\137\131\129\37\37\64\64"
|
|
.. "\64\64\96\96\64\198\133\153\149\129\149\132\150\64\215\133\162\162\150\129"
|
|
.. "\37"
|
|
|
|
|
|
function check_one(to, from, text)
|
|
print("\n-- Testing conversion from " .. from .. " to " .. to)
|
|
local cd = iconv.new(to .. "//TRANSLIT", from)
|
|
assert(cd, "Failed to create a converter object.")
|
|
local ostr, err = cd:iconv(text)
|
|
|
|
if err == iconv.ERROR_INCOMPLETE then
|
|
print("ERROR: Incomplete input.")
|
|
elseif err == iconv.ERROR_INVALID then
|
|
print("ERROR: Invalid input.")
|
|
elseif err == iconv.ERROR_NO_MEMORY then
|
|
print("ERROR: Failed to allocate memory.")
|
|
elseif err == iconv.ERROR_UNKNOWN then
|
|
print("ERROR: There was an unknown error.")
|
|
end
|
|
print(ostr)
|
|
end
|
|
|
|
check_one(termcs, "iso-8859-1", iso88591)
|
|
check_one(termcs, "utf8", utf8)
|
|
check_one(termcs, "utf16", utf16)
|
|
check_one(termcs, "EBCDIC-CP-ES", ebcdic)
|
|
|