javascript - 如何 encode和decode “unicode”

 mobiledu2502876733 发布于 2022-11-23 19:58

此问题为我之前一个问题(点这里)的后续问题.

问题

从sendgrid api获取数据,获得plain/text数据(string 格式), 如

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

我现在做的是通过JSON.parse()然后返回。
但是,在前端,却出现了一些乱码如:

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

需求

1, 如何不解析 \u00c3\u00a9r...这些unicode,而是以字符串形式直接显示在页面上。
2,如何在页面渲染之前encode这些unicode,因为这些email要作为参数再次请求[sendgrid api][2]中的删除邮件方法。所以请求的时候可以再decode这些unicode,把email作为参数,乱码的话,就不能匹配

如果用encodeURI() 则会把 比如[] 都解析了,所以就不能返回一个JSON格式,比较纠结,有没有什么好办法。

2014-11-07更新,问题已解决

首先用decodeURIComponent(escape(string))处理该字符串
"j\u00c3\u00a9r\u00c3\u00b4mel\u00c3\u00a4ufer@com"

这样将会在网页正确显示对应的符号。
当已该邮件作为参数调用删除api时

POST(这里有点怪,不是DELETE,但是官方的api) https://api.sendgrid.com/api/invalidemails.delete.json

body是

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

然后就ok了

1 个回答
  • 返回的错误值是无效的邮箱帐号,帐号里包含了宽字节的字符。

    猜测:调用接口时,传递的值不对。 有效的邮箱格式用到都是普通字符ascii码表內的,不会包含宽字节的字符。
    也许是你调用接口的方式错了, 或者调用接口时传递的是乱码

    2022-11-23 20:24 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有