android中URLEncoder.encode 实际上与PHP encode有所区别。
其中android的URLEncoder.encode 将
空格 =》 +
“-”,“_”,“.”,“*” 这四种符号不做编码
源代码截图
URLEncoder源代码截图PHP encode 分为urlencode()和rawurlencode()
其中rawurlencode在PHP 5.3.0前遵循 RFC 1738 , PHP 5.3.0前之后遵循 RFC 3986
详情见:
https://stackoverflow.com/questions/996139/urlencode-vs-rawurlencode
android的URLEncoder.encode与PHPrawurlencode()区别
+ 改为"%20"
"*" 改为 "%2A"
"%7E" 改为 "~"
在Java端的处理(kotlin代码)
fun encode(str:String?): String{
return URLEncoder.encode(str,"UTF-8").replace("+", "%20").replace("*", "%2A").replace("%7E", "~");
}
PS: android.net.Uri 遵循的是rfc2396,与PHP也有所区别
网友评论