1.对接的一个 urlencode 规则是除了字符数字_三种,其他的全部转化为%后面跟两位的 16 进制数
2.urlencode 文档:字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+),不符合
3. 使用 rawurlencode(),-_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数。
问题就是:将使用 rawurlencode()后没有转义的-和.替换为转义的%2D 和%2E
$a = '中国 de www 人.min-guo';
$b = rawurlencode($a);
str_replace('.','%2E',$b);
str_replace('-','%2D',$b);
$b = strtoupper($b);
echo $b;
输出的结果并没有替换:%E4%B8%AD%E5%9B%BDDE%20WWW%E4%BA%BA.MIN-GUO