メモの日々


2009年10月26日(月) [長年日記]

  • 「めざせ皆勤賞!」ってのは部外者から見てもどうかと思う。学生じゃないんだから。
  • コストが増えるだけで利益に貢献するとは思えない。もっと儲かる会社になって欲しいんだけど難しそう。

[web][tdiary] HTMLフォームと文字コード

tDiaryをバージョンアップしてから、右上にある検索フォームに日本語のキーワードを入力したときに正しく検索できなくなっていた(遷移先の画面からなら検索できるので、そこでキーワードを入力し直せば検索できる)。

原因は、日記のページは文字コードがUTF-8だが検索機能はEUC-JPにしか対応していないため。pnamazuのソースを見るとNKFを使って変換しているようなのでUTF-8でも大丈夫そうに思うんだけれど、うまくいっていない。

それで、HTMLのFORM要素にはaccept-charset属性があるので、ここにEUC-JPを指定すればうまく動くはず。ということで右上のフォームにはもうこれを設定してあり、Firefoxからならちゃんと検索できるようになった。

が、IE8では依然としてうまくいかない。検索すると、IEは昔からずーっとaccept-charset属性に対応していないようだ。何故対応しないのか。

IEがaccept-charsetを見るのは現在のページの文字コードで表せない文字を送信されるデータが含んでいるときだけだからのようです。

とあって、「現在のページの文字コードで表せない文字」をhiddenに仕込めればaccept-charset属性が使えそうなんだけれど、UTF-8で表せない文字なんて仕込めそうにない。元ページがEUC-JPなどなら使えるBKなんだろうけどなあ。

仕方ないので文字コードを変換するCGIを作ろうとしたが、生産性の低さにより時間切れ。わりと面倒そうなのだ。

(追記)

pnamazuがなぜ変換してくれないのかをもうちょっと調べてたら怪しい所があったので、pnamazuを修正してみたらIEからでも検索できるようにできた。NKFモジュールを読み込むタイミングを変えたのだけれど、これで別の問題が発生する可能性はある。