PerlでのURLエンコーディング

Perl初心者のためのPerlノートです!

HTML/ CSS/ CGI-Perl/ JavaScript/ JavaApplet/ AccessUp/ Internet/ EnglishLearn/ ちゃいちゃん天使/ 天使メッセージ/ 飯田ワールド/ 結城ワールド/ プロフィール/ WEB相談室/ WEBアンテナ/ WEBリーダー/ 燈明日記/ yahoo

◆ はじめに

本ページは、私がPerlを習得した時(いや習得中)のノートです。

ごく普通の言語(COBOL,C,Java,VB等)を知っている人が、Perlをやり始めるといろいろと悩むことがあります。

それは、

です。

本ページは、そのようなハードルを一つ一つクリアにしていけたらと思います。

そして、本ページが何かのお役に立てれば幸いです。では、ごゆっくりご覧ください。

尚、ご感想、ご意見、誤字、脱字、間違い等がありましたら遠慮なくPerlノート掲示板へご指摘ください。

◆ サイト最新情報

◆ コンテンツ

■ PerlでのURLエンコーディング

URLエンコーディング

URLエンコーディング(ユー・アール・エル・エンコーディング)、URLエンコード、パーセントエンコーディング

エンコーディング(エンコード)とは、データを特定のコードに変換することです。また、元に戻すことをデコーディング(デコード)と言います。

URLエンコーディングとは、URLに英字、数字、特定の記号(ピリオド、ハイフン、アンダースコア、チルダ)以外を指定する場合に、そのコードが特別な意味をもってしまうことを避けるために、16進数表現でエンコードする方式です。日本語の全角文字もエンコードの対象です。

エンコードの書式は「%nn」で、nnは16進数表現です。それで1バイトを表現します。たとえば「http://」は「http%3A%2F%2F」になります。

クエリー文字列内におけるスペース(半角空白)のエンコードは例外で、「+」に置き換えて表現します。

エンコードの16進数のアルファベットは大文字でも小文字でも構いません。

「URLエンコーディング」は、最新の規格(RFC3986)において「パーセントエンコーディング」と呼ばれます。

http://www.seiren-udoku.com/noteOfSeoMR-URL%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0.html
最新の規格(RFC3986 日本語訳)

http://www.studyinghttp.net/

に行って、以下のURLを入力

http://www.studyinghttp.net/cgi-bin/rfc.cgi?3986


上記を踏まえてコーディングすると・・・
URLエンコード
    $string =~ s/([^\w .-~])/'%'.unpack('H2', $1)/eg;
    $string =~ tr/ /+/;
URLデコード
    $string =~ tr/+/ /;
    $string =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack('H2', $1)/eg;

尚、フォームのエンコード方法は、以下の通りです。

フォームのエンコード方法はその中のRFC1866の第8.2.1節にあります。

スペースは '+' に置換する。

RFC1738(後述)で予約文字として定義されている文字はその16進数を%XX形式に変換する。

属性名と属性値はイコール"="で区切る。

レコード(属性名と属性値の2つ組み)はアンド"&"で区切る。

http://www.kinet.or.jp/hiromin/cgi_introduction/appendix/url_encode.html
RFC1866(日本語訳)

http://www.age.ne.jp/x/sf/HT/HTML/RFC1866J-1_0.TXT

◆ おすすめ Perl本

■ 続・初めてのPerl 改訂版

『初めてのPerl』の次ぎに読むと吉です。

結構いいですが・・・、初心者にはちょっと難しいかもです。

■ 結城浩のPerlクイズ

この本には、ちゃいちゃんパパの小話しが載っています(謎)。

ある程度、Perlを理解している人には、たまらない内容になっています。さすが結城先生だな!

結城浩のPerlクイズ

■ 新版Perl言語プログラミングレッスン入門編

実は、私はまだ読んでいませんが、結城先生の本なので良くないはずがありません。

新版Perl言語プログラミングレッスン入門編

■ CGI&Perlポケットリファレンス (Pocket reference)

この本は、非常に役に立ちます。ちょっと調べるのに最適です。サンプルも説明も的を射ています。

CGI&Perlポケットリファレンス (Pocket reference)

■ Perlベストプラクティス

一読の価値有りだと思います。

Perlベストプラクティス

■ プログラミングPerl〈VOLUME1〉

ご存知、Perl本の聖書、ラクダ本(上)です。

■ プログラミングPerl〈VOLUME2〉

ご存知、Perl本の聖書、ラクダ本(下)です。

◆ おわりに

最後に、本ページが、何かのお役に立てれば幸いです。

尚、ご感想、ご意見、誤字、脱字、間違い等がありましたら遠慮なくPerlノート掲示板へご指摘ください。

HTML/ CSS/ CGI-Perl/ JavaScript/ JavaApplet/ AccessUp/ Internet/ EnglishLearn/ ちゃいちゃん天使/ 天使メッセージ/ 飯田ワールド/ 結城ワールド/ プロフィール/ WEB相談室/ WEBアンテナ/ WEBリーダー/ 燈明日記/ yahoo

人のよいところをどんどん見つけよう