/ 最近 .rdf 追記 編集 設定 本棚

脳log[20060530] Windowsの環境変数と文字コードのわからん | tdiary/hikidoc.rb: <pre>の中でも強調したい | 13点、14冊



2006年05月30日 (火)

[Ruby] Windowsの環境変数と文字コードのわからん

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と名の付くものにスラッシュやバックスラッシュを含めるのが間違い)

[tDiary] tdiary/hikidoc.rb: <pre>の中でも強調したい

<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

   ######################################################################
  • inline_parser()が ''強調'', '''もっと強調''', ==打消==, [[WikiName]]や URLっぽい本文を解釈する。
  • unescape_meta_char( text, true )をコメントアウトすることでメタ文字({, }, :, ', ", |)のエスケープを有効にしてるのは inline_parser()によってシングルクォートなどが解釈されるようになった結果、<pre>の中にシングルクォートそのものを書く方法がなくなったから。
  • restore_plugin_block(ret, true)をコメントアウトしてるのは <pre>の中でもプラグインを使いたいから。
  • メタ文字をリストアップしていて気付いたけどイコールとブラケットがメタ文字に含まれてなくてエスケープができないから、こんなふうに ==打ち消し== とか [[WikiName]] の書き方の例示ができなくね? 左のは {{'=='}} みたいにプラグイン記法でなんとかしたけど。

 <pre>の中と外でマークアップが変わらないことのテスト

 [Wikiソース]
''test''
 ''test''
''test&'test\'''
 ''test&'test\'''
 [変換後のHTML]
<p><em>test</em></p>
<pre>
<em>test</em>
</pre>
<p><em>test&amp;'test'</em></p>
<pre>
<em>test&amp;'test'</em>
</pre>

[]13点、14冊

  • [文庫] 神林 長平【グッドラック―戦闘妖精・雪風 (ハヤカワ文庫JA)】 早川書房
  • [文庫] 清原 なつの【千の王国百の城 (ハヤカワ文庫 JA (667))】 早川書房
  • [文庫] 清原 なつの【春の微熱 (ハヤカワ文庫 JA (694))】 早川書房
  • [文庫] 桑島 由一【神様家族〈8〉おはよう!こどもショー (MF文庫J)】 メディアファクトリー
  • [文庫] 野島 けんじ【鳥は鳥であるために (4) (MF文庫J)】 メディアファクトリー
  • [文庫] 仁木 健【Add 機械に捧ぐレクイエム (角川スニーカー文庫)】 角川書店
  • [文庫] 仁木 健【Add 機械の謳うララバイ (角川スニーカー文庫)】 角川書店
  • [文庫] 仁木 健【Add 機械が嗤うスケルツォ (角川スニーカー文庫)】 角川書店
  • [文庫] 支倉 凍砂【狼と香辛料 (電撃文庫)】 メディアワークス
  • [コミック] 凜野 ミキ【光 3 (3) (IDコミックス ZERO-SUMコミックス) (IDコミックス ZERO-SUMコミックス)】 一迅社
  • [コミック] 久世 番子【imp! 〈インプ〉 (Wings comics)】 新書館
  • [コミック] 【es~エターナル・シスターズ 乙女と乙女の恋するコミックアンソロジー(2)】 一迅社
  • [単行本] J. K. ローリング, J. K. Rowling【ハリー・ポッターと炎のゴブレット 上下巻2冊セット (4)】 静山社