Rubyで数値文字参照を文字列に変換する

先日、rubyXLというgemを試していたとき、日本語が日本のように表示されてしまいました。

すわ、文字化け?と思いましたが、よく良く調べてみると数値文字参照という形のようです。

ただ文字化けでないことは分かりましたが、これを人が読める文字列の形にするためにはどうすればいいのか、かなり悩んだのでここにメモ。

結論から言うと、htmlentitiesを使えば簡単に変換できました。

いつものようにgem installでhtmlentitiesをインストール。

tsubame.local{miyohide}% gem install 'htmlentities' 
Fetching: htmlentities-4.3.1.gem (100%)
Successfully installed htmlentities-4.3.1
1 gem installed
tsubame.local{miyohide}%

ちょっと確かめてみます。

ちなみに、数値文字参照の値はこのページから値を得ました。「日本」は「日本'」だそうです。

tsubame.local{miyohide}% irb
irb(main):001:0> require 'htmlentities'
=> true
irb(main):002:0> puts HTMLEntities.new.decode('日本')
日本
=> nil
irb(main):003:0> 

おぉ!きちんと変換できました。すばらしい。