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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值