pメソッド使用時UTF-8なのに文字化けする

Last-modified: Thu, 07 Jul 2016 08:02:04 JST (471d)
  • Ruby2系なのに、pメソッドやppメソッドでUTF-8な日本語を出力したときに、
# -*- encoding: utf-8 -*-
require "pp"
pp "ああああ漢字"
p "あああ".encoding

"\u3042\u3042\u3042\u3042\u6F22\u5B57"
#<Encoding:UTF-8>

のように文字化けすることがあります。
しかし、文字列のエンコードはUTF-8で問題ないようです。

これは、pメソッドが主にデバック目的のため、文字コードをそのまま出力するのが原因のようです。
解決法は、pメソッドではなく、putsメソッドを使いましょう。

# -*- encoding: utf-8 -*-
require "pp"
puts "ああああ漢字"

ああああ漢字

Counter: 279, today: 1, yesterday: 0

このページの参照回数は、279です。