gpt4 book ai didi

javascript - decodeURIComponent vs unescape,unescape有什么问题?

转载 作者:IT王子 更新时间:2023-10-29 03:02:41 25 4
gpt4 key购买 nike

在回答另一个问题时,我意识到我的 Javascript/DOM 知识已经有点过时了,因为我仍在使用 escape/unescape 对内容进行编码URL 组件,而现在看来我应该改用 encodeURIComponent/decodeURIComponent

我想知道的是 escape/unescape 有什么问题?有一些模糊的建议表明 Unicode 字符存在某种问题,但我找不到任何明确的解释。

我的 Web 体验相当偏颇,几乎所有的体验都是在编写与 Internet Explorer 绑定(bind)的大型 Intranet 应用程序。这涉及大量使用 escape/unescape 并且所涉及的应用程序多年来一直完全支持 Unicode。

那么 escape/unescape 应该有哪些 Unicode 问题?有没有人有任何测试用例来证明问题?

最佳答案

What I want to know is what is wrong with escape/unescape ?

它们本身并不是“错误”的,它们只是它们自己的特殊字符串格式,看起来有点像 URI 参数编码,但实际上不是。特别是:

  • ‘+’表示加号,不是空格
  • 有一种特殊的“%uNNNN”格式用于编码 Unicode UTF-16 代码点,而不是编码 UTF-8 字节

因此,如果您使用 escape() 创建 URI 参数值,对于包含加号或任何非 ASCII 字符的字符串,您将得到错误的结果。

escape() 可以用作内部 JavaScript-only 编码方案,例如转义 cookie 值。然而,现在所有浏览器都支持 encodeURIComponent(最初并非如此),没有理由优先使用 escape。

据我所知,escape/unescape 的现代用法只有一种,这是通过在 URIComponent 处理中利用 UTF-8 处理来实现 UTF-8 编码器/解码器的一种快速方法:

utf8bytes= unescape(encodeURIComponent(unicodecharacters));
unicodecharacters= decodeURIComponent(escape(utf8bytes));

关于javascript - decodeURIComponent vs unescape,unescape有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/619323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com