此问题为我之前一个问题(点这里)的后续问题.
问题
从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了
返回的错误值是无效的邮箱帐号,帐号里包含了宽字节的字符。