htmlspecialchars_decode
xmlは&や<や>が&や<や>にエンコードされているわけだから、 それをデコードしてあげなきゃいけなかったんだ。 phpだとhtmlspecialchars_decodeでなんとかなりそう。 Rubyだと、なんだろう・・・うう脳がとろけそう。
たぶん、gsubだな。gsubしかない気がしてきた。 深く考え過ぎないようにしないと。
整理しよう。xmlから取り出すときは、htmlspecialchars_decodeしてあげる(Rubyではgsubでえんやこら)。
htmlに書き出すときは htmlspecialcharsしてあげる(Rubyは今回CGIに使わないので関係ない)。
ただし、htmlの中でもurlに書き出すときは urlencodeしてあげる(Rubyは今回CGIに使わないので関係ない)。
mysqlに格納するときはmysql_real_escape_stringしてあげる(RubyはMysql::quote)。
たったそれだけだよ。わはは。
urlencodeではなくrawurlencodeを使わねばならなかったもよう。 urlencodeは空白文字を+に変換してしまう。 rawurlencodeは空白文字を%20に変換する。 mediawikiとの相性で言うと空白文字は%20に変換されなくてはならん。 うーむ。