[erlang-questions] io:getopts() possibly unset when evaluating code
José Valim
jose.valim@REDACTED
Tue Apr 3 12:02:59 CEST 2012
It seems that, when evaluating code via -eval (or -s or -run), the standard
IO options are not yet set.
In my case, what happens is that the encoding is still set to latin1, while
it should be unicode.
Here is how I reproduce the issue:
$ erl -eval 'io:format("~p~n", [io:getopts()]), halt().'
[{expand_fun,#Fun<group.0.33302583>},
{echo,true},
{binary,false},
{encoding,latin1}]
However, invoking io:getopts() inside the shell returns the proper result:
Eshell V5.9 (abort with ^G)
1> io:getopts().
[{expand_fun,#Fun<group.0.33302583>},
{echo,true},
{binary,false},
{encoding,unicode}]
This means that, if I print any unicode value during -eval (or -s or -run),
it will fail by printing question marks instead of the accented words. This
can be verified with:
$ erl -eval 'io:put_chars(<<"josé"/utf8>>), halt().'
The same inside the console prints correctly.
Is this a bug?
Regardless if it is a bug or not, should I just set
io:setopts([{encoding,unicode}]) for now?
Thanks,
*
José Valim
www.plataformatec.com.br
Founder and Lead Developer
*
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20120403/1ae8db43/attachment.htm>
More information about the erlang-questions
mailing list