2012-05-15 3 views
5

키릴 문자가있는 바이너리를 사용할 수 있어야합니다. 나는 단지 <<"абвгд">>을 쓰려고했지만 badarg 오류가 발생했습니다.키릴 문자로 얼랭 및 바이너리

Erlang에서 키릴 문자 (또는 유니 코드) 문자열로 어떻게 작업 할 수 있습니까?

+1

어떤 도움이 필요합니까? http://www.erlang.org/doc/apps/stdlib/unicode_usage.html – NPE

답변

12

erlang shell에 위의 식을 입력하려면 unicode 모듈 사용자 설명서를 읽으십시오. 기능 character_to_binarycharacter_to_list은 모두 되돌릴 수있는 기능입니다.

([email protected])37> io:getopts(). 
[{expand_fun,#Fun<group.0.33302583>}, 
{echo,true}, 
{binary,false}, 
{encoding,unicode}] 

([email protected])40> A = unicode:characters_to_binary("上海"). 
<<228,184,138,230,181,183>> 

([email protected])41> unicode:characters_to_list(A). 
[19978,28023] 

([email protected])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]]) 

([email protected])46> io:format("~ts~n",[ unicode:characters_to_list(A,utf8)]). 
上海 
ok 

소스 코드에 직접 unicode:characters_to_binary("上海").를 사용하려면 조금 더 복잡하다 : 다음은 예입니다. 차이를 찾기 위해 먼저 시도해 볼 수 있습니다.

6

Erlang 컴파일러는 코드를 ISO-8859-1로 인코딩 된 텍스트로 해석하므로 라틴 문자로 제한됩니다. 유니 코드에서 원하는만큼의 바이트 표현을 가질 수있는 일부 ISO 문자를 사용할 수는 있지만 아주 좋은 생각은 아닙니다.

편집기에서 ISO-8859-1을 읽고 쓰고 가능한 한 리터럴을 사용하지 않으려는 경우. 파일에서이 문자열을 가져옵니다.

관련 문제