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

JavaScriptでは、 unescapeで一発なんですけど…

A 回答 (2件)

こんな感じ


# 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
    • good
    • 0
この回答へのお礼

ありがとうございます。
このプログラムはネットで見つけてたのですが、どうもうまく動いて無くて、諦めてました。

でも、ここでもやっぱりこれが示されたと言うことは、やっぱり有能なんだと言うことなので、もう一度試して見るとしっかりと動作しました。


ありがとうございました。

お礼日時:2011/04/24 01:29

puts "\u3053\u3093\u306B\u3061\u306F".encode(Encoding::SJIS)



じゃダメなん?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング