rexmlライブラリでエラー
Ruby1.9がリリースされ、年も明けた(関係ない)ので早速試してみました。笹田さんに人柱志願した手前もあるのでとりあえずRuby1.9で手持ちのSubversionのログを整形するRubyスクリプトを実行してみると、以下のようなエラーになりました。
ちなみにartonさんの Ruby-1.9.0 Windows Installer Packageを使いました。
#<ArgumentError: incompatible encoding regexp match (UTF-8 regexp with ASCII-8BI T string)> C:/Program Files/Ruby-1.9.0/lib/ruby/1.9.0/rexml/text.rb:90:in `=~' C:/Program Files/Ruby-1.9.0/lib/ruby/1.9.0/rexml/text.rb:90:in `initialize' C:/Program Files/Ruby-1.9.0/lib/ruby/1.9.0/rexml/parsers/treeparser.rb:43:in `new' C:/Program Files/Ruby-1.9.0/lib/ruby/1.9.0/rexml/parsers/treeparser.rb:43:in `parse' C:/Program Files/Ruby-1.9.0/lib/ruby/1.9.0/rexml/document.rb:205:in `build' C:/Program Files/Ruby-1.9.0/lib/ruby/1.9.0/rexml/document.rb:42:in `initialize' format_svn_log.rb:10:in `new' format_svn_log.rb:10:in `initialize' format_svn_log.rb:62:in `new' format_svn_log.rb:62:in `<main>' ... incompatible encoding regexp match (UTF-8 regexp with ASCII-8BIT string) Line: 16 Position: 577 Last 80 unconsumed characters: </msg>
このスクリプトに食わせたテキストは以下のようなログです。(utf8n/lf)
<?xml version="1.0"?> <log> <logentry revision="22"> <author>hashimoto</author> <date>2007-06-03T14:21:18.183035Z</date> <paths> <path action="M">/rrmailer/app/helpers/application_helper.rb</path> <path action="M">/rrmailer/app/views/mails/show.rhtml</path> </paths> <msg>#8 (「送信済みメールの詳細」で改行、折り返しが適切に表示されるようにする) を実装した。 以前<pre>をやめたのに加え、ヘルパーメソッドで改行を<br />、スペースを$nbsp;に変換して表示するようにした。 </msg> </logentry> </log>
1.9だと文字列の扱いが変わったということに関連していると思うんだけど。。どうしたらいいんだろ?また気が向いたら調べよう。(奇特な方がいらしたら教えてください)