わたなべです。

keiichi matsunaga <ma2 / lifemedia.co.jp> writes:

> |日本語に特化してるわけではありませんが、URI.extractとか。

特化というより、Regexp.newで'N'を指定してるので対応してない
と言ったほうがいいかもしれません。

>  ちょっと妙なことが1つ。
> 
>  str = "スhttp://hoge.jp"
>   URI.extract(str)
> 
> とすると,"Xhttp://hoge.jp"と抽出してしまいますね。
> 
>  WindowsXP + ruby 1.6.7 で試しました。
>  元の文字列はシフトJISです。

というわけでこういう結果になるわけですが、解決法としては

1. EUCに変換してからURI::extractに渡す
2. 日本語を削除してからURI::extractに渡す。
   str.gsub(/[^a-zA-Z0-9_\W]+/, '')とか。
3. URI.extractの結果から日本語を削除する。

などが考えられます(日本語を単純に消していい場合)。

uri/common.rbのRegexp.newの'N'をなんとかするという手もあるか
もしれない。

-- 
わたなべひろふみ