URLENCODE加号+
一、问题
字符串"小 狗++小 猫.png"经过URLEncode、URLDecode后,变成"小 狗 小 猫.png",加号变成了空格;
二、原因
按网上的说法,URLEncode根据请求方式的不同存在两种情况:
+ | 空格 | |
加密后,情况1 | + | %20 |
加密后,情况2 | %2B | + |
URLDecode解密不区分URLEncode是什么情况:
+ | %2B | %20 | |
解密后,只有一种情况 | 空格 | + | 空格 |
根据以上的分析,以"小 狗++小 猫.png"为例:
小 狗++小 猫.png | 解密结果 | |
加密后,情况1 | %E5%B0%8F%20%E7%8B%97++%E5%B0%8F%20%E7%8C%AB.png | 小 狗 小 猫.png |
加密后,情况2 | %E5%B0%8F+%E7%8B%97%2B%2B%E5%B0%8F+%E7%8C%AB.png | 小 狗++小 猫.png |
三、解决办法
加密方和解密方都无法根据加密后的结果判断是哪种情况;
解密方遇到情况1,不希望解密后+变成空格,可在解密前,将+替换成%2B;