blog20100901

2013/08/20 - プログラミング言語 Perl にまつわる etc. - Perl monger
参考 : perldoc, perldoc.jp, search.cpan.org, perldoc.perl.org ...
「 初めての Perl 第 6 版 」(オライリー・ジャパン発行 ISBN978-4-87311-567-2) 」
「 続・初めての Perl 改訂版 」(オライリー・ジャパン発行 ISBN4-87311-305-9) 」
「 Effective Perl 第 2 版 」(翔泳社発行 ISBN978-4-7981-3981-4) 」 ... etc,.

Perl Perl_2

Perl 「 モジュール 」 CGI 実用的なファイルアップロード 04 2 つのヘッダ (0x111)

Perl 「 モジュール 」 CGI 実用的なファイルアップロード 04 2 つのヘッダ (0x111)

目次 - Perl Index



Theme



Perl について、復習を兼ねて断片的な情報を掲載して行く連載その 0x111 回。

CGI.pm で、実用的なファイルアップロードの処理を確認する。その 04 回。HTML フォームの作成部分の内「 CGI オブジェクトの作成」と「 HTTP ヘッダの作成 」および「 HTML ヘッダの作成 」を確認する。



プログラム フォームの作成。



Cgi upload - perlmeme.org で紹介されている、ファイルアップロードのための実用的なコードの、HTML フォーム作成部分を確認します。


# CGI オブジェクト作成
my $q = new CGI;

# HTTP ヘッダ
print $q->header;

# HTML ヘッダ
print $q->start_html(
-title => "An example file upload web page",
);

# 見出し, フォームスタート
print $q->h3('Use this form to upload a local file to the wev server'),
$q->stat_multipart_form(
-name => 'main_form');

# ファイルフィールド
print 'Enter a filename, or click on the browse button to choose one: ',
$q->filefield(
-name => 'filename',
-size => 40,
-maxlength => 80);

# サブミットボタン
print $q->hr;
print $q->submit( -value => 'Upload the file');
print $q->hr;

# フォームエンド
print $q->end_form;



このプログラムコードは、英語をベースに書かれているので、日本語ベースで利用するには、HTTP ヘッダを出力するメソッド header() で、文字コードの設定を追加する必要があります。

今回は、この中から「 CGI オブジェクトの作成」と「 HTTP ヘッダの作成 」および「 HTML ヘッダの作成 」を確認します。


CGI オブジェクトの作成



まず、モジュール CGI.pm を「 オブジェクト指向スタイル 」で利用するために、新しい CGI オブジェクトを作成します。それから、HTTP ヘッダと HTML ヘッダを作成します。

「 オブジェクト指向スタイル 」での利用は、(0xb0) で確認しました。


# CGI オブジェクト作成
my $q = new CGI;

# HTTP ヘッダ
print $q->header;

# HTML ヘッダ
print $q->start_html(
-title => "An example file upload web page",
);



僕は普段、CGI "新しい問い合わせオブジェクトの作成" - perldoc.jp の例に倣い、次の様にしてオブジェクトを作成しますが、上記の様なスタイルでも問題ない様です。


my $q = CGI->new;



HTTP ヘッダ作成



HTTP ヘッダの作成では、日本語表示を可能にするために、パラメータ「 -charset 」を指定することにします。HTML 上の表示を英語だけで済ませるつもりなら、この設定は不要です。

メソッド header() の各パラメータは、(0xd0) 等で確認しました。


# パラメータ -charset で EUC-JP を指定
print $q->header( -charset => 'euc-jp');




HTML ヘッダ作成



(0xe3) で確認した通り、日本語表示を行う場合は、メソッド header() の設定のみで問題ありませんが、僕は HTML ヘッダでも、次の様に日本語の設定をする様にしています。ついでにタイトルも変更します。


# HTML ヘッダ
print $q->start_html(
# -title => "An example file upload web page",
-title => "ファイルロードの Web ページ例",
-lang => 'ja',
-encoding => 'euc-jp',
);


HTTP ヘッダと HTML ヘッダでの日本語設定



上述した通り、日本語の設定を行う場合は、HTTP ヘッダで設定してあげれば、日本語の文字列が文字化けしないことを確認しています。

しかしながら、HTML ページの日本語設定についての理解がしっかりしていなかった僕は、"念のため" HTML ヘッダ側でも日本語の設定を行っていました。

なぜならば、Web 系の情報が掲載されたページでは HTML ヘッダのみ、ネットワーク系のページでは HTTP ヘッダのみの記述に終始する場合がほとんどで、双方の関係について、確たる理解を得ることが出来なかったからです。

そうした中で、今回の記事をきっかけに、改めて Web を徘徊したところ、双方の情報が丁寧に解説された Web ページを発見しました。

文字コード宣言は行いましょう(HTML) - Web 標準普及プロジェクト

このページによって、HTTP ヘッダ側で日本語設定を行えるのであれば、HTML ヘッダ側での設定は不要であることをはっきり確認出来ました。ありがとうございます。

この Web サイトの "Web標準化Tips" は、Web サイト構築に関わる場合にとても役立つ ( 知りたいことが書いてある ) 様に思えるので、今後も参照していく予定です。いいサイト見つけたな。


0x111 -> 0x112 へ



次回は、HTML フォームの作成部分を確認します。


参考情報は書籍「 初めての Perl 第 6 版 」を中心に perldoc, Wikipedia および各 Web サイト。それと詳しい先輩。

目次 - Perl Index













同じカテゴリー(Perl)の記事
 Perl mp2 翻訳 Web コンテンツ圧縮の FAQ (d228) (2023-10-11 23:49)
 Perl mp2 翻訳 既知のブラウザのバグの回避策をいくつか (d227) (2023-05-26 15:41)
 Perl mp2 翻訳 Perl と Apache でのキュートなトリック (d226) (2023-05-19 17:05)
 Perl mp2 翻訳 テンプレートシステムの選択 (d225) (2022-08-15 22:23)
 Perl mp2 翻訳 大規模 E コマースサイトの構築 (d224) (2022-06-15 20:43)
 Perl mp2 翻訳 チュートリアル (d223) (2022-06-15 20:42)
上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。

Llama
リャマ
TI-DA
てぃーだブログ
プロフィール
セラ (perlackline)
セラ (perlackline)
QRコード
QRCODE
オーナーへメッセージ

PAGE TOP ▲