[erlang-bugs] standard_error IO device is not being set to unicode

José Valim <>
Thu Apr 10 19:54:22 CEST 2014


Hello OTP Team,

I am using Erlang 17.0 and it seems the standard_error device is not being
set to unicode. On a Mac OS X:

1> io:format("~p~n", ["josé"]).
"josé"
ok
2> io:format(standard_error, "~p~n", ["josé"]).
"jos�"
ok

If we inspect the standard_error process, we can see in the process
dictionary that unicode is set to false:

3> process_info(whereis(standard_error), dictionary).
{dictionary,[{unicode,false}]}

Once I explicitly enable unicode, it works:

4> io:setopts(standard_error, [{unicode, true}]).
ok
5> io:format(standard_error, "~p~n", ["josé"]).
"josé"
ok

Thank you!

PS: I found it interesting that the standard_error process does not accept
the same options as the standard_io one:

6> io:setopts(standard_error, [{encoding, utf8}]).
{error,enotsup}
7> io:setopts(standard_error, [{unicode, true}]).
ok
8> io:setopts(standard_io, [{unicode, true}]).
{error,enotsup}
9> io:setopts(standard_io, [{encoding, utf8}]).
ok

However this seems to be an "old" behaviour (it exists at least in R16 too).

*José Valim*
www.plataformatec.com.br
Skype: jv.ptec
Founder and Lead Developer
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-bugs/attachments/20140410/b4cce6e2/attachment.html>


More information about the erlang-bugs mailing list