ここではPHPのurlencode()の話をするが、URLエンコードなので他の言語でも共通と思われる。
URLエンコードする時、半角数字やアルファベットなんかはそのまま返ってくるよね。あと、一部の記号もそのままスルーされるようだ。
この際、どの文字がそのままになるのか、調べてみよう。
実際に1文字ずつurlencode()に突っ込んで試してみた。
$str = '';
for ($i = 0; $i < 256; $i++) {
$c = chr($i);
if ($c === urlencode($c)) $str .= $c;
}
var_dump($str);
↓結果
string(65) "-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz"

数字、アルファベット大文字小文字と、記号3つ「-」「.」「_」。計65文字でした。