paranitips

Never stop learning! がモットーのゆるふわエンジニアブログ

「`join’: incompatible character encodings: ASCII-8BIT and UTF-8 (Encoding::CompatibilityError)」を解決する

コマンドライン引数で日本語を渡して文字列処理をしようとしたら
「内部と外部エンコーディングが異なるからjoinできないよ」と言われました。

$ ruby test.rb "てすとだよ"
test.rb:39:in `join': incompatible character encodings: ASCII-8BIT and UTF-8 (Encoding::CompatibilityError)
    from test.rb:39:in `<main>'

rubyで起動する際はオプションでエンコーディングを指定してやることで解決。

$ ruby -E ASCII-8BIT:UTF-8 test.rb "てすとだよ"

-E hoge:fuga
hoge:外部エンコーディング
fuga:内部エンコーディング

応急処置的な対応なので他の方法があれば更新します。

参考