5

キリル文字を含むバイナリを使用できるようにする必要があります。書い<<"абвгд">>てみましたが、badargエラーが発生しました。

Erlang でキリル文字 (またはユニコード) の文字列を扱うにはどうすればよいですか?

4

2 に答える 2

12

上記の式を に入力する場合は、モジュールのユーザー マニュアルerlang shellを参照してください。unicodeFunction character_to_binary、 とcharacter_to_listはどちらも可逆関数です。次に例を示します。

(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

ソース コードで直接使用する場合unicode:characters_to_binary("上海").は、もう少し複雑です。最初に試して違いを見つけることができます。

于 2012-05-15T08:31:26.643 に答える
6

Erlang コンパイラはコードを ISO-8859-1 でエンコードされたテキストとして解釈するため、ラテン文字に制限されます。Unicode で必要なバイト表現と同じバイト表現を持つ一部の ISO 文字を使用できる場合もありますが、これはあまり良い考えではありません。

エディターが ISO-8859-1 を読み書きできるようにし、リテラルの使用をできるだけ避けたいと考えています。これらの文字列をファイルから取得します。

于 2012-05-15T16:50:54.727 に答える