なるほど。ありがとうございます。
折角だからもう一度引用させてもらおう。
外部とのインタフェースがある場合は安全性の面で確認せざるを得ない場合もあるだろうけど,基本的には期待はしても確認はしないっていうスタンスでいた方がずっと柔軟性が高い.each が一行ずつ文字列をくれさえすればいいから入力は String でも IO でも ARGF でも構わない,なんて事がたやすくできるし.
というのは、mod_encoding が使っている iconv ラッパーライブラリ。 変換に使うエンコーディングとして MSSJIS, EUC-JP, EUCJP, JA-AUTO* 等が指定された場合は内部の関数で処理し、それ以外ならnativeのiconvに中継する。
──と言う物なのだけど。 glibc に EUC-JP-MS と CP932 のパッチ が取り込まれたので、debian ではもう要らないのではないかと思ってちょっと検証。
SHIFT_JIS に関しては iconv_hook 版 (MSSJIS) の方が native iconv (CP932)に対して 8790(≒), 8791(≡), 8792(∫), 8795(√), 8796(⊥), 8797(∠), 8799(∵), 879a(∩), 879b(∪), EEF9(¬), FA54(¬) が抜け落ちてるみたい。
EUC-JP は自分で書いた検証用の C のプログラムがへぼ過ぎて 3byte の部分に 対応できなくて良く分からない……けど、まあ取り合えずこちらは iconv_hook 版の方が 変換できる物が多い。native iconv は F9A0〜FCFF の漢字が消えてる。
とりあえずもうちょっと調べてみよう。 iconv_hook を使わなくても済むならその方が良いだろうし。 あ、でも JA-AUTO* が使えなくなるな。
なんてこった。 iconv_hook はリンクされているけど使われていない状態だった事がさっき判明。 ごめんなさいごめんなさい……。
何でこれで動いているかの様に見えたかというと、サンプル通り
DefaultClientEncoding JA-AUTO-SJIS-MS SJIS AddClientEncoding "Microsoft .* DAV" MSSJIS
と書いてると、MSSJIS が見つからなくて Default に移行、 そして JA-AUTO-SJIS-MS も見つからなくて SJIS に落ちる。
うー。とりあえず iconv_hook を使うバージョンを upload してもらおう……