LINUX.ORG.RU

[Erlang] iconv

 


0

0

Добрый вечер. Подскажите бестолковому. Насколько разумно пользоваться вот этим: http://cean.process-one.net , насколько оно стабильно и тд. Этот же вопрос касается Jungerl, который вобще с виду похож больше на труп.

Возвращаясь к Jungerl. Как запустить iconv? Пробую:

1> application:start(iconv).
{error,{not_started,sasl}}
2> application:start(sasl).
...
...
3> application:which_applications().
[{sasl,"SASL CXC 138 11","2.1.6"},
{stdlib,"ERTS CXC 138 10","1.16.2"},
{kernel,"ERTS CXC 138 10","2.13.2"}]
4> application:start(iconv).

=CRASH REPORT==== 4-Aug-2009::03:35:34 ===
crasher:
initial call: application_master:init/4
pid: <0.52.0>
registered_name: []
exception exit: {bad_return,
{{iconv_app,start,[normal,[]]},
{'EXIT',
{undef,
[{iconv_app,start,[normal,[]]},
{application_master,start_it_old,4}]}}}}
in function application_master:init/4
ancestors: [<0.51.0>]
messages: [{'EXIT',<0.53.0>,normal}]
links: [<0.51.0>,<0.5.0>]
dictionary: []
trap_exit: true
status: running
heap_size: 377
stack_size: 24
reductions: 105
neighbours:

=INFO REPORT==== 4-Aug-2009::03:35:34 ===
application: iconv
exited: {bad_return,
{{iconv_app,start,[normal,[]]},
{'EXIT',
{undef,
[{iconv_app,start,[normal,[]]},
{application_master,start_it_old,4}]}}}}
type: temporary
{error,{bad_return,{{iconv_app,start,[normal,[]]},
{'EXIT',{undef,[{iconv_app,start,[normal,[]]},
{application_master,start_it_old,4}]}}}}}

Куда копать? Уж очень iconv нужен. Спасибо.


iconv:start().

Насчёт того, насколько разумно пользоваться всеми библиотеками из jungerl, не скажу, но конкретно этот модуль используется в ejabberd. Может быть, лучше его брать из репозитория ejabberd.

DrLivsy
()
Ответ на: комментарий от arhibot

Только я видимо что-то не так делаю:
Так перекодируется: iconv --f utf8 --t latin1 file |iconv --f cp1251 --t utf-8
А если пробовать iconv из ejabberd то такое получается:
> iconv:convert("cp1251","utf-8",iconv:convert("utf-8","latin1","Çäðàâñòâóéòå! Ñïàñèáî çà ïðèñîåäèíåíèå")).

"! "

arhibot
() автор топика
Ответ на: комментарий от arhibot

Лучше делать через файлы, эрланговая консоль как-то хитро конвертит IO.

$ cat test
Çäðàâñòâóéòå! Ñïàñèáî çà ïðèñîåäèíåíèå
$ erl -pa /usr/lib/ejabberd/ebin
Erlang R13B01 (erts-5.7.2) [source] [rq:1] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.7.2 (abort with ^G)
1> {ok, Data} = file:read_file("test").
{ok,<<195,135,195,164,195,176,195,160,195,162,195,177,
195,178,195,162,195,179,195,169,195,178,195,165,33,
32,195,...>>}
2> iconv:start().
{ok,<0.37.0>}
3> Data1=iconv:convert("cp1251","utf-8",
3> iconv:convert("utf-8","latin1",binary_to_list(Data))).
[208,151,208,180,209,128,208,176,208,178,209,129,209,130,
208,178,209,131,208,185,209,130,208,181,33,32,208,161,208|...]
4> file:write_file("test1", list_to_binary(Data1)).
ok
5>
BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded
(v)ersion (k)ill (D)b-tables (d)istribution
^C$ cat test1
Здравствуйте! Спасибо за присоединение
$

DrLivsy
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.