≫エンコード・デコード処理とは
エンコード・デコードのもともとの意味は、
エンコード = 暗号化です。
デコード = 解読する
広くは、情報を一意のデジタル形式に変換することをエンコードと言い、エンコードされたものを元に戻すことをデコードと言います。
エンコード・デコードがなぜ必要かというと、通信上意味をなす文字を正しくやりとりするためです。
例えば、インターネット上で、ブラウザからサーバにデータをPOSTする際には、データを Key=Value&Key2=Value2 という風な形式で送ります。
この時、Key や Value に = や & が含まれていたりすると、厄介なことが起きます。
なので、
value に「a&b」という文字列を送ろうとすると、エンコードされ「a%26b」という文字列になります。
この、「a&b」を「a%26b」に変換する処理をエンコード、「a%26b」を「a&b」に変換する処理をデコードと言います。
ちなみに、
Key=Value&Key2=Value2 を Key=Value と Key2=Value2 に分解する処理は、パーズ処理(構文解析処理)と言います。
このページでは、CGIでよく利用するPerlやJavaScriptにおける、エンコード・デコード処理についてまとめてみたいと思います。
≫実例サンプル
- URLエンコード(URLエスケープ)
「愛 誠」を「%E6%84%9B+%E8%AA%A0」に変換する$str =~ s/([^\w ])/'%' . unpack('H2', $1)/eg;
$str =~ tr/ /+/;
- URLデコード(URLアンエスケープ)
「%E6%84%9B+%E8%AA%A0」を「愛 誠」に変換する$str =~ tr/+/ /;
$str =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack('H2', $1)/eg;
- Base64エンコード
モジュールのインストールはCPANから。perl -MCPAN -e 'CPAN::Shell->install("MIME::Base64")'
$str は EUC-JP 前提。use MIME::Base64;
$encoded_str = encode_base64($str);
- Base64デコード
use MIME::Base64;
$str = decode_base64($encoded_str);
- メールサブジェクトエンコード
mimew.pl → http://www.cc.rim.or.jp/~ikuta/mime_pls/document.html
$str は JIS 前提。require "mimew.pl";
$str = mimeencode($str);
- メールサブジェクトデコード
require "mimer.pl";
$str = mimedecode($str);
TOP > スクリプト制作メモ > Perl/JavaScriptによるエンコード・デコード処理