URLエンコードは空白や特殊記号、日本語などの全角文字を送信する際
に正しく送る為に必要なものです。
Yahoo! や Google などで検索してブラウザのURL欄を見てみると、 %など
を含む意味不明な文字列になっていますが、これがURLエンコードです。
URLエンコードはフォームなどから送信する際、アクセスした人の端末で
行われますので、URLエンコードについての説明は省きます。
実際にこれを受け取る場合にはエンコードされた文字列をデコードします。
下の例では 入力された文字をエンコード という文字列をURLエンコードしたものと、
それをデコードしたものを、実行結果で表示します。
フォームなどより送られるデータをURLエンコードする際はアクセスする端末側(ブラウザ側)で
行わる為、大抵使用するのはデコードのみで、URLエンコードの処理はあまり利用しません。
デコードは下のようにすれば内容を理解していなくても使用する事ができます。
深く理解したい方は ASCII コード 、SJISやEUCの文字コード表などと、pack や
unpack 、 hex
などの関数の意味と、実際に出力される文字列を見比べると良いと思います。
+ の置換えは s/\+/ / でも同じ事ができますが tr の方が処理が速いようです。
【デコード】
対象の変数内文字列の + 記号を半角スペースに戻す
$対象の変数 =~ tr/+/ /;
対象の変数の文字列をデコードする
$対象の変数 =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
【参考】
ASH multimedia lab (文字コード一覧)
https://ash.or.jp/code/
TeraPad (テキストエディタ)
https://www.vector.co.jp/soft/win95/writing/se104390.html
TpSCC (TeraPad から SJIS文字コードを参照)
https://www.vector.co.jp/soft/win95/writing/se291654.html
|