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