luaiconv跳坑记,luaiconv跳坑


官方地址:https://github.com/ittner/lua-iconv

没有windows版本,只能自己动手了。

下载libiconv,用用现成的吧,http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.9.1.bin.woe32.zip


打开vs,新建一个win32工程,选择dll动态库,勾上空项目,加入luaiconv.c,添加头文件目录,库目录,编写def导出函数。

一切看似很顺利,坑就在前面

一大坑 导出函数为luaopen_iconv,生成dll名字要为iconv.dll,还依赖libiconv里面的iconv.dll,两个文件名重合了,只好修改函数为luaopen_luaiconv,dll也相应修改

二大坑

require("luaiconv")

local cd = luaiconv.new("utf8","utf16")

提示attempt to index global 'luaiconv' (a nil value),这个是没有自己看带的例子造成的,例子第一句就写着local iconv = require("iconv"),因为luaopen_luaiconv中使用的luaL_newlib(L, iconv_funcs)

三大坑

check_one(termcs, "iso-8859-1", iso88591)
check_one(termcs, "UTF-8", utf8)
check_one(termcs, "utf16", utf16)
check_one(termcs, "EBCDIC-CP-ES", ebcdic)

开始一心一意用自带例子来测试了,结果还是被带到沟里。

-- Testing conversion from utf8 to utf-8
lua: test_iconv.lua:82: Failed to create a converter object.

查看libiconv的iconv_open说明,发现utf8得写成utf-8

http://www.gnu.org/savannah-checkouts/gnu/libiconv/documentation/libiconv-1.13/iconv_open.3.html



相关内容

    暂无相关文章