質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Elixir

Elixirは、並列処理や関数型に特化した、Erlang VM (BEAM) 上で動作する汎用プログラミング言語です。分散システム、耐障害性、ソフトリアルタイムシステムなどの機能を持ちます。

Q&A

解決済

1回答

1129閲覧

Elixir で :io.format による標準出力をすると文字化けする

koko_u

総合スコア936

Elixir

Elixirは、並列処理や関数型に特化した、Erlang VM (BEAM) 上で動作する汎用プログラミング言語です。分散システム、耐障害性、ソフトリアルタイムシステムなどの機能を持ちます。

0グッド

0クリップ

投稿2019/01/08 13:53

問題点

Elixir で書式付き出力をするために、:io.format を使用したら、日本語が文字化けしてしまった。
Elixir での文字列、バイナリ、エンコード周りの取り扱いがよくわかっていません。対処法などのアドバイスをいただきたいです。

環境

Linux Mint
LANG の設定は ja_JP.UTF-8

Erlang OTP21.2
Elixir 1.7.4

事象

Erlang の対話シェルでの出力では文字化けすることなく出力できている

koko_u@localhost ~ $ erl Erlang/OTP 21 [erts-10.2] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:1] [hipe] Eshell V10.2 (abort with ^G) 1> io:format("あいうえお~n"). あいうえお ok 2>

Elixir の対話シェルでは文字化けする

koko_u@localhost ~ $ iex Erlang/OTP 21 [erts-10.2] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:1] [hipe] Interactive Elixir (1.7.4) - press Ctrl+C to exit (type h() ENTER for help) iex(1)> :io.format("あいうえお~n") あだうããŠ :ok iex(2)>

Elixir の IO.puts での出力は文字化けしない

iex(2)> IO.puts("あいうえお") あいうえお :ok iex(3)>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ElixirとErlangでは".."で作った文字列の内部表現が異なります。ElixirではUTF-8エンコーディングのbinaryで、ErlangではUTF-8エンコーディングのchar listになります。

iex

1iex> "あいう" == <<"あいう">> 2true 3iex> is_list("あいう") 4false

erl

1> "あいう" =:= [$あ, $い, $う]. 2true 3> is_list("あいう"). 4true

ElixirからErlangのio:formatを使うときにはchar listを渡すとうまくいきます。Elixirではchar listは'..'で作ります。

iex

1# binaryを渡すと文字化けする 2iex> :io.format("あいう~n") 3あいう 4:ok 5 6# char listを渡せば正しく表示される 7iex> :io.format('あいう~n') 8あいう 9:ok

投稿2019/01/08 15:22

tatsuya6502

総合スコア2035

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

koko_u

2019/01/08 22:50

大変明快な回答をありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問