Erlang 字符编码模块: iconv

在Erlang中,要处理字符串编码的转换,可以使用iconv,目前CEAN的发行版本,ejabberd和iconv模块里面都有iconv的库,但是都无法正常运行(提示版本不兼容),但是在ejabberd的安装包可以使用。经过比较,发现是
erl.exe,erlexec.dll,beam.dll 这三个启动程序的问题,ejabberd的是V5.5.2.2,而CEAN1.2和ErlangOTP R11B4都是V5.5.4,可能两个版本跟iconv的c port不兼容。

下面就以ejabberd的erlang版本来说明:

首先启动port
[quote]1> iconv:start().
{ok,<0.30.0>}[/quote]

[code]2> iconv:convert("gbk", "utf-8", "你好").
"浣犲ソ"[/code]

Windows下控制台编码为gbk,这里将“你好”编码为UTF8后输出,显示乱码,可以用io:format解决:
[quote]3> io:format("~w~n", [iconv:convert("gbk", "utf-8", "你好")]).
[228,189,160,229,165,189]
ok[/quote]

反过来流程是一样的:
[quote]4> iconv:convert("utf-8", "gbk", [228,189,160,229,165,189]).
"你好"[/quote]

要解决在Erlang发行版下使用的问题,估计要重新编译iconv的port。有谁有更好的方法,欢迎提出。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值