コードページ932

アクセスカウンタ

zoom RSS Apache の mod_ext_filter で EUC-JP 補助漢字対策

<<   作成日時 : 2009/11/26 03:08  

なるほど(納得、参考になった、ヘー) ブログ気持玉 1 / トラックバック 0 / コメント 0

EUC-JP で Web サイトを構築した場合、IE が EUC-JP で補助漢字をサポートしていないため、他のブラウザで POST される補助漢字が文字化けしてしまいます。

IE でも数値文字参照なら表示ができるので、補助漢字を数値文字参照に置換して表示しましょうという事で、Apache の mod_ext_filter モジュールから呼び出して使えるフィルタースクリプトを作ってみました。

eucjp_jisx0212_filter.pl
#!/usr/bin/perl

use strict;
use warnings;
use Encode 'decode';

my $euc_jisx0212 = '\x8F[\xA1-\xFE][\xA1-\xFE]';
my $euc_jisx0212_tilde = '\x8F\xA2\xB7';
my $fullwidth_tilde = '&#65374;';

while (<STDIN>) {
    s/$euc_jisx0212_tilde/$fullwidth_tilde/go;
    s/($euc_jisx0212)/sprintf("&#%d;", ord(decode('euc-jp', $1)))/geo;
    print;
}

httpd.conf に以下を追加 (http://〜/wiki に対して適用する例)
LoadModule ext_filter_module modules/mod_ext_filter.so

ExtFilterDefine eucjp_jisx0212_output_filter mode=output \
  intype=text/html outtype=text/html \
  cmd="/usr/bin/perl /usr/local/bin/eucjp_jisx0212_filter.pl"

<Location /wiki>
  SetOutputFilter eucjp_jisx0212_output_filter
</Location>

※Fedora 11 で EUC-JP版 pukiwiki をインストールして確認

Input/Output の両方をフィルタリングしたりEUC-JPエンコーディングのバリデーションチェックを行うための Apache モジュールをどうやれば作れるのかという事を調べていたら mod_ext_filter モジュールがある事がわかり、とりあえず Output Filter だけでも外部スクリプトで作ってみようという事で作って見ました。結構簡単に IE の文字化け回避するためのフィルターを作れてしまいました。

Apache側で処理しているので、Webアプリ側には手を加えなくても良いのはうれしい。

月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ
気持玉数 : 1
なるほど(納得、参考になった、ヘー)

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
Apache の mod_ext_filter で EUC-JP 補助漢字対策 コードページ932/BIGLOBEウェブリブログ
文字サイズ:       閉じる