読者です 読者をやめる 読者になる 読者になる

1.8.7でUNICODEのコードポイント文字列をUTF-8文字列にデコードする

Ruby

やっぱり欲しくなったので、UNICODEのコードポイントの
変換メソットをStringに追加するようにしてみました。

class String
  def unicode2utf8
    self.gsub(/\\u([0-9a-fA-F]{4})/){[$1.hex].pack("U")}
  end
end

これを定義すると、

puts 'Element.update("template_error", "\u6307\u5b9a\u3055\u308c\u305f\u5b9a\u578b\u30e1\u30c3\u30bb\u30fc\u30b8\u306f\u524a\u9664\u3055\u308c\u3066\u3044\u308b\u304b\u3001\u6a29\u9650\u304c\u3042\u308a\u307e\u305b\u3093\u3002");'.unicode2utf8
=> "Element.update(\"template_error\", \"指定された定型メッセージは削除されているか、権限がありません。\");"

ここまで来ると、ようやくRSpec上で
response.bodyをdecodeして日本語を比較できそうだ。