/erlang-iconv

Torbjorn Tornkvist's (etnt) iconv driver for erlang (extracted from Jungerl)

Primary LanguageCMIT LicenseMIT

About

Erlang-iconv is a fork of the iconv in Jungerl. I pulled it out of jungerl because I only wanted iconv, not all the other stuff in jungerl and because the jungerl build system wasn't very helpful on anything but linux.

erlang-iconv has been built and tested on the following platforms:

  • Linux
  • FreeBSD
  • OpenBSD
  • OSX

It should also build on NetBSD and most other UNIX-like systems. I haven't bothered to try on windows yet.

Usage

Here's some sample usage converting some shift-jis text to utf-8:

1> iconv:start().
{ok,<0.53.0>}
2> X = <<83,97,109,112,108,101,58,32,142,132,32,130,205,32,131,67,32,131,147,32,131,79,32,131,71,32,130,197,32,130,183,13,10>>.
<<83,97,109,112,108,101,58,32,142,132,32,130,205,32,131,
  67,32,131,147,32,131,79,32,131,71,32,130,197,32,...>>
3> io:format("~s~n", [X]).
Sample:
         Í C  O G Å ·

ok
4> io:format("~ts~n", [X]).
** exception exit: {badarg,[{io,format,
                                [<0.25.0>,"~ts~n",
                                 [<<83,97,109,112,108,101,58,32,142,132,32,130,205,32,
                                    131,67,32,131,147,...>>]]},
                            {erl_eval,do_apply,5},
                            {shell,exprs,6},
                            {shell,eval_exprs,6},
                            {shell,eval_loop,3}]}
     in function  io:o_request/3
5> {ok, CD} = iconv:open("utf-8", "shift-jis").
{ok,<<176,86,91,1,0,0,0,0>>}
6> {ok, Output} = iconv:conv(CD, X).
{ok,<<83,97,109,112,108,101,58,32,231,167,129,32,227,129,
      175,32,227,130,164,32,227,131,179,32,227,130,176,
      ...>>}
7> io:format("~ts~n", [Output]).
Sample: 私 は イ ン グ エ で す
8> iconv:close(CD).
ok

As you can see, before we passed it through iconv it was an unprintable mess.

Installation

To install, use rake:

rake
sudo rake install

If the compilation of the C part fails with errors about iconv, you have to specify the prefix where iconv is located, for example on FreeBSD:

rake iconv=/usr/local

And if you don't have iconv or it's development header installed (and iconv isn't part of your C libary) install it.