PHP のマニュアルの、rawurlencode の関数説明で簡潔明快に解説されています。-_.~ を除くすべての非アルファベット文字をパーセント 記号 (%)に続いて 2 つの 16 進数がある表現形式に 置き換えた文字列を返します。これは、文字定数が特殊な URL デリミタと して解釈されたり、URL デリミタが(いくつかの電子メールシステムのような) 転送メディアにより文字変換されて失われてしまったりすることが ないように、RFC 3986 で定められたエンコーディング方法です。要するに、-_.~ の4文字以外は全て%エンコーディングされるという事で、通常の URLENCODE でパーセントエンコードされない可能性のある 『+!'()*/』も%エンコーディングされます。ですから、他の言語の同様のメソッドや関数を RFC 3986 対応するには、『+!'()*/』をそれぞれ文字列変換しなおせば良いです。それと、 『~』が『%7E』になっている可能性があるので、元に戻す必要があります ▼ Java による例
String target = "文字列"; target = URLEncoder.encode(target, "UTF-8"); target = target.replace("+", "%20"); target = target.replace("*", "%2A"); target = target.replace("%7E","~");
関連する記事 いろいろな言語におけるバーセントエンコーディング
|