昔は、 Apache commons の codec とか使うのを見かけたけど、そんなことせずにURLエンコードは、、、
Java の URLEncoder では、、、
「*」→ %2a
「-」→ %2d
「_」→ %5f
の3つの記号が変換されず、半角スペースは「+」になる。
String str ="*-_a b c"; String encodeStr = URLEncoder.encode(str, "UTF-8") .replace("+", "%20") .replace("*", "%2a") .replace("-", "%2d") .replace("_", "%5f");
こういう原始的な方がいい。
デコードは、
URLDecoder.decode(encodeStr, "UTF-8")
JavaScript で変換できないのは、関数其々でことなるが、escape 2バイト文字は別の体系、
%uxxxx のコードになるので、URLエンコードとしては使えないと思う、
encodeURI 関数は、、
;/?:@&=+$-_!~*.,()a#'
encodeURIComponent関数は、、
-_!~*.()a'
escape関数は、、
*+-_./