>>644
http://www.forkosh.com/mimetex.html
とりあえず↑のページを表示して、Bad URLにならないよう直したのが↓のコード

require 'uri'
module URI
  DOMLABEL = "(?:[#{PATTERN::ALNUM}](?:[-_#{PATTERN::ALNUM}]*[#{PATTERN::ALNUM}])?)"
  PCHAR = "(?:[#{PATTERN::UNRESERVED}:@&=+$,\\[\\]\\{\\}`]|#{PATTERN::ESCAPED})"
  URIC = "(?:[#{PATTERN::UNRESERVED}#{PATTERN::RESERVED}\\^\\{\\}\\\\\\]|#{PATTERN::ESCAPED})"
  X_ABS_URI = PATTERN::X_ABS_URI.gsub(PATTERN::DOMLABEL, DOMLABEL).gsub(PATTERN::URIC, URIC).gsub(PATTERN::PCHAR, PCHAR)
  X_REL_URI = PATTERN::X_REL_URI.gsub(PATTERN::DOMLABEL, DOMLABEL).gsub(PATTERN::URIC, URIC).gsub(PATTERN::PCHAR, PCHAR)
  ABS_URI = Regexp.new('^' + X_ABS_URI + '$', Regexp::EXTENDED, 'N')
  REL_URI = Regexp.new('^' + X_REL_URI + '$', Regexp::EXTENDED, 'N')
end


DOMLABEL はホスト名の部分。オリジナルに _ を追加
PCHAR はパス名の部分。MSNの画像で Bad URL になるんで []{}` を追加
URIC はクエリーの部分。mimetexで Bad URL になるんで ^{}\ を追加

ほかにエラーになる文字があったら自分で追加してくれ
それと3連続 gsub がカッコ悪いんで、スマートな書き方あったら誰かよろしく

っつか、>>618で元の質問したの俺なんだよなぁ
コピペ張られて自分で答えるという、一人やらないかウホッな気分