当更改为 TypeScript 时,我不再允许使用 escape(string),因为它已被弃用。我仍然使用它的原因是替代方案encodeURI和encodeURIComponent给出了不同的结果。
\nvar s = "\xc3\x85"\nconsole.log(escape(s));\nconsole.log(encodeURI(s));\nconsole.log(encodeURIComponent(s));
Run Code Online (Sandbox Code Playgroud)\r\n我不将其用于 URL,而是用于 CSV 导出。
\n还有哪些其他选择可以给我带来与 相同的结果escape(string)
?
在EcmaScript 规范中有一个算法:
\n\n可以这样编码:
\n\n(function(global) {\n var allowed = \'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789@*_+-./,\';\n global.escapeString = function(str) {\n str = str.toString();\n var len = str.length, R = \'\', k = 0, S, chr, ord;\n while(k < len) {\n chr = str[k];\n if (allowed.indexOf(chr) != -1) {\n S = chr;\n } else {\n ord = str.charCodeAt(k);\n if (ord < 256) {\n S = \'%\' + ("00" + ord.toString(16)).toUpperCase().slice(-2);\n } else {\n S = \'%u\' + ("0000" + ord.toString(16)).toUpperCase().slice(-4);\n }\n }\n R += S;\n k++;\n }\n return R;\n };\n\n})(typeof window == \'undefined\' ? global : window);\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
2475 次 |
最近记录: |