此问题为我之前一个问题(点这里)的后续问题.
从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格式,比较纠结,有没有什么好办法。
首先用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了
返回的错误值是无效的邮箱帐号,帐号里包含了宽字节的字符。
猜测:调用接口时,传递的值不对。 有效的邮箱格式用到都是普通字符
ascii
码表內的,不会包含宽字节的字符。
也许是你调用接口的方式错了, 或者调用接口时传递的是乱码