[Ruby] 文字列内のアスキーコード以外をHTMLの実体参照にする方法

苦労したのでメモ。id:ryu00026さんのおかげで無事解決、unpackすっかり忘れてました。ずっとプログラミング言語 Ruby リファレンスマニュアルあたりを調べてました。orz

irb(main):021:0> p "あああaaa".unpack("U*").map{|c| c<256?[c].pack("U"):"&#x%x;" % c }.join
"&#x3042;&#x3042;&#x3042;aaa"

このエントリーしてからアクセスログを見てみると実体参照関連でたどりついてる人が何人かいるけど、いったい何の為に実体参照必要なんだろう。たどり着いた人はコメントください。

ちなみに、調べた経緯はJavaScriptのライブラリを作っていて日本語を書くと文字コードに依存するので、その回避の為でした。