2007-09-05
Rubyで数値文字参照をUTF-8にする
どういうわけか書いた、数値文字参照をUTF-8にするスクリプトがあったのであげてみる。完成品はラストの一行だけなんですけどねー、ねー。
$KCODE='u' # 文字は 16bit と仮定 s1 = '人生オワタ'.unpack('U*').collect {|c| c >= 255 ? '&#' + c.to_s + ';' : c.chr }.join s2 = '\(^o^)/'.unpack('U*').collect {|c| c >= 255 ? '&#x' + c.to_s(16) + ';' : c.chr }.join s = s1 + s2 puts '元データ ("人生オワタ"は10進,"\(^o^)/"は16進)' puts s #=>人生オワタ\(^o^)/ puts '(1) 10進数値による数値文字参照 => UTF-8' puts s.gsub(/&#(\d*?);/) { [$1.to_i].pack('U') } #=>人生オワタ\(^o^)/ puts '(2) 16進数値による数値文字参照 => UTF-8' puts s.gsub(/&#[xX]([0-9a-fA-F]{4});/) { [$1.to_i(16)].pack('U') } #=>人生オワタ\(^o^)/ puts '(1) + (2)' puts s.gsub(/&#(\d*?);/) { [$1.to_i].pack('U') }.gsub(/&#[xX]([0-9a-fA-F]{4});/) { [$1.to_i(16)].pack('U') } #=>人生オワタ\(^o^)/ puts '数値文字参照 => UTF-8' puts s.gsub(/&#(?:(\d*?)|(?:[xX]([0-9a-fA-F]{4})));/) { [$1.nil? ? $2.to_i(16) : $1.to_i].pack('U') } #=>人生オワタ\(^o^)/
この更新自体が、自作はてダラのテストだったりするんですよねー、ねー。
トラックバック - http://d.hatena.ne.jp/eclipse-a/20070905/1189001865
リンク元
- 135 http://blog.livedoor.jp/coelacanth_blog/archives/55255648.html
- 75 http://d.hatena.ne.jp/toolkit/20080602/p1
- 63 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja:official&q=Eclipse timeStamp&btnG=検索&lr=
- 62 http://b.hatena.ne.jp/entry/d.hatena.ne.jp/eclipse-a/20070905/1189001865
- 51 http://www.google.co.jp/search?q=Ruby+数値文字参照&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a
- 43 http://www.google.co.jp/search?q=Ruby+文字参照&btnG=検索&hl=ja
- 32 http://blog.livedoor.jp/coelacanth_blog/archives/cat_50241892.html
- 23 http://www.google.co.jp/search?hl=ja&safe=off&client=firefox-a&rls=org.mozilla:ja-JP-mac:official&hs=a6j&q=数値文字参照+ruby&btnG=検索&lr=lang_ja
- 21 http://www.google.co.jp/search?hl=ja&client=firefox&rls=org.mozilla:ja:official&hs=ELg&q=文字参照 ruby&btnG=検索&lr=lang_ja
- 20 http://b.hatena.ne.jp/entry/6784130/Rubyで数値文字参照をUTF-8にする - くふんを狙え
