前段时间再做航天云网设备数据上传的时候,发现在用ajax向后台发数据时,控制台提示数据上传失败,最后发现是设备编号里面包含了+这类的特殊字符,后台服务器将+识别成了其他的字符,也就是特殊字符服务器不能解析。
首先想到的就是把特殊字符进行编码在传递,上网搜了一下,发现有一个现成的方法:encodeURIComponent();
常见特殊字符列表,如下图:
符号 |
含义 |
编码 |
+ |
+号表示空格 |
%2B |
空格 |
用+号或者编码 |
%20 |
/ |
分隔目录和子目录 |
%2F |
? |
分隔实际的 URL 和参数 |
%3F |
% |
指定特殊字符 |
%25 |
# |
表示书签 |
%23 |
& |
参数间的分隔符 |
%26 |
= |
URL 中指定参数的值 |
%3D |
方法一:var str= para.replace(/%/g,"%25");//g代表全局匹配替换
方法二:encodeURIComponent(str); //使用改方法自动转码。