ona*_*sar 5 javascript encoding
我正在努力将一些代码与第三方集成,有时他们传递给我正在编写的Javascript函数的字符串参数将被编码使用encodeURIComponent,有时它不会.
是否有确定的方法来检查它是否已被编码使用encodeURIComponent
如果没有,我将进行编码然后
不可靠,特别是在字符串可能被编码两次的情况下:
encodeURIComponent('http://stackoverflow.com/')
// yields 'http%3A%2F%2Fstackoverflow.com%2F'
encodeURIComponent(encodeURIComponent('http://stackoverflow.com/'))
// yields 'http%253A%252F%252Fstackoverflow.com%252F'
Run Code Online (Sandbox Code Playgroud)
本质上,如果您在传递的参数实际上并未编码但具有编码字符串的质量时尝试检测字符串编码,那么您将解码一些不应该解码的内容。
我建议在定义“isURIComponent”中添加第二个参数。
但是,如果您想尝试,也许以下方法可以解决问题:
if ( str.match(/[_\.!~*'()-]/) && str.match(/%[0-9a-f]{2}/i) ) {
// probably encoded with encodeURIComponent
}
Run Code Online (Sandbox Code Playgroud)
这测试未编码的非字母数字字符是否完整,以及十六进制是否存在(例如 %20 表示空格)
| 归档时间: |
|
| 查看次数: |
3084 次 |
| 最近记录: |