日々精進

新しく学んだことを書き留めていきます

rubyで二バイトコード

rubyは.NETに比べて文字コードの問題が起こりやすい気がします。
オープンソースに共通する問題かも知れませんが。
世界のいろんな人がいろんな文字コードを前提としてコードを書いてるからでしょうか。
mechanizeの単体テストである要素のinner_htmlを取得すると文字化けしてました。

page.search("a").each do |href|
  puts href.inner_html
end

これはtoutf8でコード変換すればOK。

page.search("a").each do |href|
  puts href.inner_html.toutf8
end



次に漢数字を半角数字に直す場合。

names.collect{|name| name.tr('一二三四五六七八九', '1-9')}

これはjcodeを使います。

require 'jcode'
names.collect{|name| name.tr('一二三四五六七八九', '1-9')}

jcodeをrequireすると二バイトコードを正しく扱ってくれる。
が、以下の場合は正しく処理できないようだ。

"一二三四五六七八九"[2..3] #=>三四とはならない

バイトコードを含む文字列の指定箇所を抜き出す方法は今後の宿題にします。