mirror of
https://github.com/lunarmodules/lua-iconv.git
synced 2025-06-22 20:24:36 +02:00
108 lines
4.9 KiB
Lua
108 lines
4.9 KiB
Lua
require "iconv"
|
|
|
|
-- WARNING! This code assumes an iso-8859-1 terminal!
|
|
|
|
local iso88591 = [[
|
|
Ao longe, ao luar
|
|
No rio uma vela
|
|
Serena a passar,
|
|
Que é que me revela
|
|
|
|
Não sei, mas mue ser
|
|
Tornou-se-me estranho,
|
|
E eu sonho sem ver
|
|
Os sonhos que tenho.
|
|
|
|
Que angústia me enlaça?
|
|
Que amor não se explica?
|
|
É a vela que passa
|
|
Na noite que fica
|
|
|
|
-- Fernando Pessoa]]
|
|
|
|
|
|
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)
|
|
if not cd then
|
|
printf("FAILED!")
|
|
return
|
|
end
|
|
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("us-ascii", "iso8859-1", iso88591)
|
|
check_one("iso8859-1", "utf8", utf8)
|
|
check_one("iso8859-1", "utf16", utf16)
|
|
check_one("iso8859-1", "EBCDIC-CP-ES", ebcdic)
|
|
|
|
|