2011-07-06の日記で触れていた、エラーコードの件。解決したっぽい。 s.to_s.gsub(/([^a-zA-Z0-9_.-]+)/n) do これを、 s.to_s.gsub(/([^a-zA-Z0-9_.-]+)/) do に変えたら出なくなった。 最後の「n」は正規表現のオプションで、文字列を単なるバイト列として扱う。ところが、実際にsに代入される文字列はUTF-8でエンコードされていた。もともと、UTF-8でエンコードされているものを、単なるバイト列として扱おうとしていたからエラーが出てたのか。 なお、 s.to_s.gsub(/([^a-zA-Z0-9_.-]+)/u) do にしても出なくなる。ここで、「u」は、文字列をUTF-8でエンコードされているものとして扱うためだ。 関連記事 UTF-8とは 使うほどに良さがわかる正規表現 なお、参考にした書籍は以下。