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。有誰有更好的方法,歡迎提出。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章