URLエンコード / URLデコードするには (urlencode, urldecode) 2014/09/27
各プログラミング言語でのURLエンコードまたはURLデコードする方法。
PHP 2014/02/18
例
// URLデコード
$str = urldecode("%2B+%3D%26 %E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A");
echo $str;
// => + =& あいうえお
urlencode
関数 | PHP Manual
http://www.php.net/manual/ja/function.urlencode.php
urldecode
関数 | PHP Manual
http://www.php.net/manual/ja/function.urldecode.php
Ruby 2013/09/20
require 'cgi'
# URLエンコード
puts CGI.escape "+ =&"
# => %2B+%3D%26
Perl 2014/09/27
URLエンコードの例
my $str = "abc(def&ghi?jk/lmn)";
$str =~ s/([^ 0-9a-zA-Z])/"%".uc(unpack("H2",$1))/eg;
$str =~ s/ /+/g;
print($str);
# => abc%28def%26ghi%3Fjk%2Flmn%29
エンコード前はバイナリである必要があるため、日本語が含まれる場合はいったん
encode_utf8
などで変換する必要がある。
my $str = "あ";
$str = encode_utf8($str);
$str =~ s/([^ 0-9a-zA-Z])/"%".uc(unpack("H2",$1))/eg;
$str =~ s/ /+/g;
print($str);
# => %E3%81%82
URLデコードの例
my $str = "%E3%81%82";
$str =~ s/\+/ /g;
$str =~ s/%([0-9a-fA-F]{2})/pack("H2",$1)/eg;
print($str);
# => あ
以下のように URI::Escape
を使ってもよい。
use URI::Escape;
# URLエンコード
print uri_escape("+ =&");
# => %2B%20%3D%26
# 日本語がある場合は uri_escape_utf8 を使う必要がある。
# 引数は、UTF8フラグがついていいるUnicode文字列で、
# UTF8のバイナリをURLエンコードする。
print uri_escape_utf8('あ');
# => %E3%81%82
# URLデコード
# 結果にはUTF8フラグが付く
print uri_unescape("%2B+%3D%26%E3%81%82");
# => ++=&あ
print uri_unescape("%2B%20%3D%26%E3%81%82");
# => + =&あ