今天在改bug的时候看到测试提出了这样一个问题,创建商品时,商品名为 ~!@#$%^&*()_+{}":>?<
这个玩意的时候创建失败,自动退出。
虽然看创建这个名字很扯淡,但是确确实实是个bug。就是因为这玩意的 #
把后面的接口链接截断了,token无法接收自动退出了,因此必须经过转义了。
encodeURI()
函数可把字符串作为 URI 进行编码,其中的某些字符将被十六进制的转义序列进行替换。
说明:该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ’ ( ) 。该方法的目的是对 URI 进行完整的编码,因此对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进行转义的:;/?:@&=+$,#
注意:如果 URI 组件中含有分隔符,比如 ? 和 #,则应当使用 encodeURIComponent() 方法分别对各组件进行编码。
var str = '~!@#$%^&*()_+{}":>?<';
str = encodeURIComponent(str);