2016-12-27 1 views
1

나는 완벽하게 작동 형태를비약/피닉스 binary_to_atom

<%= select f, :user_id, ["刺繡等等我": "2", "wow": "3"] %>

있습니다. 그러나 중국어 또는 기타 반품 오류

** (ArgumentError) argument error 
:erlang.binary_to_atom("刺繡等等我", :utf8) 
(elixir) src/elixir_parser.yrl:512: :elixir_parser.yeccpars2_93/7 

나는 이것이 인코딩과 관련이 있다고 생각합니다. 문자열을 허용되는 형식으로 변환하려면 어떻게해야합니까?

미리 감사드립니다.

답변

5

현재 Erlang (19)의 현재 버전에서 255 개를 초과하는 코드 포인트를 포함 할 수 없습니다. 바이너리 릴리스에서 유니 코드 코드 포인트> 255이 포함 된 경우

binary_to_atom (이진, UTF8)이

실패, 유니 코드 문자를 사용할 수 있으며, binary_to_atom (이진, UTF8)를 실패하지 않습니다. 이 원자에 모든 키를 변환하고 당신이 사용하고있는 텍스트가 select 이후 255

을 통해 코드 포인트가 포함 된 열거를 지원 즉

Source

["刺繡等等我": "2"] 구문은 [{:erlang.binary_to_atom("刺繡等等我"), "2"}]에 해당하는 수익률 (2) 항목 튜플을 사용하면 더 긴 표기법을 사용하여 문자열의 두 요소 튜플 목록을 구성 할 수 있습니다.

<%= select f, :user_id, [{"刺繡等等我", "2"}, {"wow", "3"}] %> 
+0

감사합니다. @Dog 대답을위한 bert! 근원을 살펴 보겠습니다. – Ilya