我有以下变量:
var string="Mazatl%E1n";
Run Code Online (Sandbox Code Playgroud)
该字符串由服务器返回。我想要做的就是将其解码为:Mazatlán
. 我尝试了以下方法:
var string="Mazatl%E1n";
alert(unescape(string));
alert(decodeURI(string));
Run Code Online (Sandbox Code Playgroud)
unescape工作正常,但我不想使用它,因为我知道它已被弃用,而是我尝试了decodeURI ,但失败并出现以下错误:
未捕获的 URIError:URI 格式错误
为什么 ?任何帮助表示赞赏。
var string="Mazatl%E1n";
Run Code Online (Sandbox Code Playgroud)
您收到错误,因为%E1
是 Unicode 编码,但decodeURI()
需要 UTF-8。
您要么必须创建自己的 unescape 函数,例如:
function unicodeUnEscape(string) {
return string.replace(/%u([\dA-Z]{4})|%([\dA-Z]{2})/g, function(_, m1, m2) {
return String.fromCharCode(parseInt("0x" + (m1 || m2)));
})
}
var string = "Mazatl%E1n";
document.body.innerHTML = unicodeUnEscape(string);
Run Code Online (Sandbox Code Playgroud)
或者您可以更改服务器以发送以 UTF-8 编码的字符串,在这种情况下,您可以使用 decodeURI()
var string = "Mazatl%C3%A1n"
document.body.innerHTML = decodeURI(string);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2917 次 |
最近记录: |