Erlang and binary with Cyrillic
binary, erlang, unicode
Solution
If you want to input the above expression in `erlang shell`, please read `unicode` module user manual. Function `character_to_binary`, and `character_to_list` are both reversable function. The following are an example:
(emacs@yus-iMac.local)37> io:getopts().
[{expand_fun,#Fun<group.0.33302583>},
{echo,true},
{binary,false},
{encoding,unicode}]
(emacs@yus-iMac.local)40> A = unicode:characters_to_binary("上海").
<<228,184,138,230,181,183>>
(emacs@yus-iMac.local)41> unicode:characters_to_list(A).
[19978,28023]
(emacs@yus-iMac.local)45> io:format("~s~n",[ unicode:characters_to_list(A,utf8)]).
** exception error: bad argument
in function io:format/3
called as io:format(<0.30.0>,"~s~n",[[19978,28023]])
(emacs@yus-iMac.local)46> io:format("~ts~n",[ unicode:characters_to_list(A,utf8)]).
上海
ok
If you want to use `unicode:characters_to_binary("上海").` directly in the source code, it is a little more complex. You can try it firstly to find difference.
Problem
I need to be able to use binaries with Cyrillic characters in them. I tried just writing `<<"абвгд">>` but I got a badarg error. How can I work with Cyrillic (or unicode) strings in Erlang?