• ベストアンサー

RubyでのUnicode→sjis

Rubyで、 「\u3053\u3093\u306B\u3061\u306F 」のようなエンコーディングされた文字を、 「あいうえお」とShift-JISで表示するにはどうすればいいのでしょうか JavaScriptでは、 unescapeで一発なんですけど…

質問者が選んだベストアンサー

  • ベストアンサー
  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1

こんな感じ # coding: cp932 module Unicode def escape(str) ary = str.unpack("U*").map!{|i| "\\u#{i.to_s(16)}"} ary.join end UNESCAPE_WORKER_ARRAY = [] def unescape(str) str.gsub(/\\u([0-9a-f]{4})/) { UNESCAPE_WORKER_ARRAY[0] = $1.hex UNESCAPE_WORKER_ARRAY.pack("U") } end module_function :escape, :unescape end require "kconv" utf8_string = "こんにちは".toutf8 escape_string = Unicode.escape(utf8_string) # => "\\u3053\\u3093\\u306b\\u3061\\u306f" puts Unicode.unescape(escape_string).tosjis # => "こんにちは".tosjis

wallstar
質問者

お礼

ありがとうございます。 このプログラムはネットで見つけてたのですが、どうもうまく動いて無くて、諦めてました。 でも、ここでもやっぱりこれが示されたと言うことは、やっぱり有能なんだと言うことなので、もう一度試して見るとしっかりと動作しました。 ありがとうございました。

その他の回答 (1)

  • koko_u_u
  • ベストアンサー率18% (216/1139)
回答No.2

puts "\u3053\u3093\u306B\u3061\u306F".encode(Encoding::SJIS) じゃダメなん?

関連するQ&A