App Engineと適当な鯖とjavascriptでクッキーをやりとりするのでencodeURIComponent()で動作を揃えることにした
javascript
encodeURIComponent()
sub encodeURIComponent { my $str = encode('utf-8', shift); $str =~ s/([^0-9A-Za-z!'()*\-._~])/sprintf("%%%02X", ord($1))/eg; return $str; }
def encodeURIComponent(str): def replace(match): return "%" + hex( ord( match.group() ) )[2:].upper() return re.sub(r"([^0-9A-Za-z!'()*\-._~])", replace, str.encode('utf-8') )
参考
http://groundwalker.com/blog/2007/02/javascript_escape_encodeuri_encodeuricomponent_.html
javascript: escape(), encodeURI(), encodeURIComponent() 比較