NAME

CGIparamJP.pm - CGI.pm wrapper for using Japanese characters


SYNOPSIS

    use strict;
    use CGI;                        # 必ず use CGI してから
    use CGIparamJP;                 # 次に use CGIparamJP する順序

    my $workcode = "UTF8";          # 内部処理コード
    my $defcode = "Shift_JIS";      # 入力コードのデフォルト(自動判別失敗時)

    my $cgi = new CGIparamJP();
    my $entcode = $cgi->set_param_charset( $workcode, $defcode );
    my $query = $cgi->Vars();       # 全クエリを読み込む

    print "Content-Type: text/html\n\n";
    foreach my $key ( sort keys %$query ) {
        my $val = $query->{$key};
        print "$key : $val\n";
    }


DESCRIPTION

CGIparamJP.pm は CGI.pm を継承して、set_param_charset メソッドを追加します。 set_param_charset メソッド以外は通常通り CGI.pm を利用できます。


use CGIparamJP

「use CGI」は必ず「use CGIparamJP」の前に置いてください。

CGI.pm がない環境の場合は、CGIparamJP.pm の独自ルーチンにより param、Vars メソッドを提供するため、「use CGI」は不要です。 ただし、この場合は CGI.pm が提供するファイルアップロード等の 仕組みは利用できません。


set_param_charset()

set_param_charset メソッドでは下記の文字コード自動判定ルールに基づいて、 クエリ変数中の文字コードを自動判別し、全てのクエリ変数を指定文字コードに 変換します。param メソッドや Vars メソッドを呼び出す前に set_param_charset メソッドを呼び出してください。

デフォルト指定した入力文字コードの他に、 フォーム中に文字コード判別用のダミーの変数を埋め込むことで ほぼ確実な文字コード判定を行います。

    <INPUT TYPE="hidden" NAME="8÷4" VALUE="2±0">

各文字コードごとに、『÷』と『±』の文字番号が異なることを利用しています。 判別が可能な文字コードは以下の通りです。

    日本語 JIS
    日本語 Shift_JIS    (CP932)
    日本語 EUC-JP
    韓国語 EUC-KR       (CP949)
    簡体字中国語 GB2312 (CP936)
    繁体字中国語 BIG5   (CP950)
    UTF8
    Latin1

または、クエリ変数 ie を利用して、文字コードを指定することも可能です。

    <INPUT TYPE="hidden" NAME="ie" VALUE="Shift_JIS">

ブラウザに自動変換されない環境でのみご利用ください。


TODO

ファイルアップロードに対応しているか動作確認する


AUTHORS

Copyright 1998-2004 Kawasaki Yusuke u-suke [at] kawa.net