UTF-8な文字列を環境変数に設定して読み出すと尻切れ。
C:\Documents and Settings\ds14050\デスクトップ>irb irb(main):001:0> sjis = '高殿 円\' # 『銃姫』を読んでる。 => "\215\202\223a \211~" irb(main):002:0> ENV['hoge'] = sjis => "\215\202\223a \211~" irb(main):003:0> ENV['hoge'] == sjis => true irb(main):004:0> require 'nkf' => true irb(main):005:0> utf8 = NKF::nkf('-w', sjis) => "\351\253\230\346\256\277 \345\206\206" irb(main):006:0> ENV['hoge'] = utf8 => "\351\253\230\346\256\277 \345\206\206" irb(main):007:0> ENV['hoge'] == utf8 => false irb(main):008:0> ENV['hoge'] => "\351\253\230\346\256\277 \345\206"
日本語の PATH_INFOが文字化けするのに閉口してて、Apacheだとか mod_rewriteが悪さをしてるのかと思ってたけど環境変数を経由してたところに問題があったのかも。
文句を言ってても解決しないので REQUEST_URIから SCRIPT_NAME相当部分を取り除いてから URLデコードして自分で PATH_INFOを手に入れる。
ところで URLエンコードされたスラッシュ(%2F)が含まれてた場合、PATH_INFOを参照するだけではその存在がわからないと思うんだけど。やっぱり PATH_INFOって使えない?(<< いやいや PATHと名の付くものにスラッシュやバックスラッシュを含めるのが間違い)
<pre>の中だからってタグが書けないわけじゃなし。インライン要素なら OKのはず。
C:\Documents and Settings\ds14050\デスクトップ>diff -u hikidoc.rb~ hikidoc.rb --- hikidoc.rb~ 2005-10-06 16:42:35.000000000 +0900 +++ hikidoc.rb 2006-05-30 06:34:32.265625000 +0900 @@ -142,8 +142,9 @@ end def restore_pre( text ) - ret = unescape_meta_char( text, true ) - ret = restore_plugin_block( ret, true ) + text = inline_parser( text ) +# ret = unescape_meta_char( text, true ) +# ret = restore_plugin_block( ret, true ) end ######################################################################
''test'' ''test'' ''test&'test\''' ''test&'test\'''
<p><em>test</em></p> <pre> <em>test</em> </pre> <p><em>test&'test'</em></p> <pre> <em>test&'test'</em> </pre>