gpt4 book ai didi

javascript - 在 JavaScript 中对 utf-8 字符串使用 encodeURI() 与 escape()

转载 作者:可可西里 更新时间:2023-11-01 01:18:01 24 4
gpt4 key购买 nike

我在 JavaScript 中处理 utf-8 字符串,需要对它们进行转义。

escape()/unescape() 和 encodeURI()/decodeURI() 都可以在我的浏览器中使用。

转义()

> var hello = "안녕하세요"
> var hello_escaped = escape(hello)
> hello_escaped
"%uC548%uB155%uD558%uC138%uC694"
> var hello_unescaped = unescape(hello_escaped)
> hello_unescaped
"안녕하세요"

encodeURI()

> var hello = "안녕하세요"    
> var hello_encoded = encodeURI(hello)
> hello_encoded
"%EC%95%88%EB%85%95%ED%95%98%EC%84%B8%EC%9A%94"
> var hello_decoded = decodeURI(hello_encoded)
> hello_decoded
"안녕하세요"

然而,Mozilla says that escape() is deprecated .

尽管 encodeURI() 和 decodeURI() 与上述 utf-8 字符串一起使用,但文档(以及函数名称本身)告诉我这些方法是针对 URI 的;我没有看到任何地方提到 utf-8 字符串。

简单地说,对 utf-8 字符串使用 encodeURI() 和 decodeURI() 可以吗?

最佳答案

您好!

说到escapeunescape ,我遵守两条规则:

  1. 尽可能避免使用它们。
  2. 否则,使用它们。

尽可能避免它们:

如问题中所述,escapeunescape已被弃用。通常,应避免使用已弃用的函数。

所以,如果 encodeURIComponentencodeURI对你有用,你应该使用它而不是 escape .

在无法轻易避免时使用它们:

浏览器将尽可能地努力实现向后兼容。所有主流浏览器都已经实现了 escapeunescape ;他们为什么要取消实现它们?

浏览器必须重新定义 escapeunescape如果新规范要求他们这样做。可是等等!编写规范的人非常聪明。他们也有兴趣不破坏向后兼容性!

我意识到上述论点是站不住脚的。但是请相信我,......当涉及到浏览器时,不推荐使用的东西是有效的。这甚至包括已弃用的 HTML 标签,如 <xmp><center> .

使用escapeunescape :

很自然地,下一个问题是,什么时候使用 escapeunescape

最近,在研究 CloudBrave 时, 我不得不处理 utf8 , latin1和相互转化。

看了一堆博文后,我意识到这是多么简单:

var utf8_to_latin1 = function (s) {
return unescape(encodeURIComponent(s));
};
var latin1_to_utf8 = function (s) {
return decodeURIComponent(escape(s));
};

这些相互转换,没有使用escapeunescape相当参与。通过不回避 escapeunescape ,生活变得简单。

希望这对您有所帮助。

关于javascript - 在 JavaScript 中对 utf-8 字符串使用 encodeURI() 与 escape(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25003217/

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