gpt4 book ai didi

javascript - 如何不编码unicode,javascript

转载 作者:行者123 更新时间:2023-11-30 17:12:02 26 4
gpt4 key购买 nike

我正在从一个 api 获取数据,并像这样获取 STRING:

[
{
"reason": "Invalid address",
"email": "j\u00c3\u00a9r\u00c3\u00b4mel\u00c3\u00a4ufer@com"
},
{
"reason": "Invalid address",
"email": "dsfdsf"
},
]

现在我只做 JSON.parse(data),然后返回。但是,在前端,渲染页面时,我得到了一些奇怪的字符,例如:

email: "jérômeläufer@com"

我要的是把\u00c3\u00a9r...这些东西转义掉,就这样在页面上展示

email: "j\u00c3\u00a9r\u00c3\u00b4mel\u00c3\u00a4ufer@com"

或者,对这些东西进行编码,因为我会使用这些电子邮件作为参数来做一些事情,但是由于这些奇怪的字符,我无法收到相同的电子邮件。

这有可能吗?

解决方案

我已经解决了这个问题,实际上我正在从 sendgrid 的 api 获取无效的 useremail 列表,api 是

GET https://api.sendgrid.com/api/invalidemails.get.json?api_user=user&api_key=key

得到返回数据如下:

[
{
"reason": "Invalid address",
"email": "j\u00c3\u00a9r\u00c3\u00b4mel\u00c3\u00a4ufer@com"
},
{
"reason": "Invalid address",
"email": "dsfdsf"
},
]

所以首先我使用

decodeURIComponent(escape(string))

这将在网页上正确显示,然后当我想删除此电子邮件并让此电子邮件作为参数从 sendgrid 调用删除电子邮件 api 时,如:

POST(which is weriod,but it's official delete method) https://api.sendgrid.com/api/invalidemails.delete.json

主体是:

body:{
user: ..,
key: ...,
email:unescape(encodeURIComponent(email))
}

然后它起作用了,所以有人知道为什么吗?

最佳答案

JSON.parse 是对的。问题出在内容本身,而不是您处理它的方式。

确实,您需要与负责上游 API 的任何人交谈,让他们修复数据中的损坏。 (虽然,如果数据是您首先发送给他们的,那么另一端仍然有可能是您的错。)

作为一项临时措施,您可以在解析 JSON 后撤消重整。如果 mangling 是 UTF-8 字节被误解为 ISO-8859-1,那么可以使用一个成语来进行匹配的编码/解码循环:

>>> decodeURIComponent(escape('jérômeläufer@com'));
'jérômeläufer@com'

(但是,它实际上可能是 UTF-8 字节被误解为 Windows 代码页 1252,在这种情况下没有同样简单的修复可用,上面会抛出异常。我不能从上面的编码格式错误的字符串。)

不是 jérômeläufer@com 是一个正确的电子邮件地址 :-)

关于javascript - 如何不编码unicode,javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26782567/

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