当更改为TypeScript时,我不再允许使用转义(字符串),因为它是deprecated。我仍然使用它的原因是因为替代品encodeURI和encodeURIComponent给出了不同的结果。
var s = "Å"
alert(escape(s));
alert(encodeURI(s))
alert(encodeURIComponent(s))
我不会将此用于网址,而是用于CSV导出。
其他替代方法会在escape(字符串)中提供相同的结果吗?
答案 0 :(得分:1)
在EcmaScript spec中有算法:
可以这样编码:
(function(global) {
var allowed = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789@*_+-./,';
global.escapeString = function(str) {
str = str.toString();
var len = str.length, R = '', k = 0, S, chr, ord;
while(k < len) {
chr = str[k];
if (allowed.indexOf(chr) != -1) {
S = chr;
} else {
ord = str.charCodeAt(k);
if (ord < 256) {
S = '%' + ("00" + ord.toString(16)).toUpperCase().slice(-2);
} else {
S = '%u' + ("0000" + ord.toString(16)).toUpperCase().slice(-4);
}
}
R += S;
k++;
}
return R;
};
})(typeof window == 'undefined' ? global : window);