首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DecodeURIComponent不支持%uXXXX编码组件

DecodeURIComponent不支持%uXXXX编码组件
EN

Stack Overflow用户
提问于 2018-05-26 04:43:50
回答 2查看 654关注 0票数 0

DecodeURIComponent不支持少数编码组件

我用我的json,restapi发送带有公告格式的JD。所以我正在编码jd并发送。这在没有任何issues.But的情况下正常工作,当我试图解码编码的JD时,我收到的错误是URI格式错误。

代码语言:javascript
复制
var jd = "Where are bullets most often used?

 - Technical writing
 - Reference works
 - Notes
 - Presentations";


var json ={
"job":encodeURIComponent(escape(jd));

}

解码:

代码语言:javascript
复制
var jd = decodeURIComponent(jd);

thi是我从响应中得到的编码jd。

代码语言:javascript
复制
Where%20are%20bullets%20most%20often%20used%3F%0A%uF0B7Technical%20writing%0A%uF0B7Sub%20bullet%0A%uF0B7Reference%20works%0A%uF0B7Notes%0A%uF0B7Presentations%0A%uF0B7Lists%0AAn%20alternative%20method%20is%20to%20use%20a%u807Dnumbered%20list%3A%0A1.Technical%20writing%0A2.Reference%20works%0A3.Notes%0A4.Presentations%0A5.Lists
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-26 06:09:01

你必须先unescape

代码语言:javascript
复制
var jd = decodeURIComponent(unescape(json.job));
票数 1
EN

Stack Overflow用户

发布于 2018-05-26 14:58:30

避免使用escape()

来自“文件”:

逃逸() escape()函数计算一个新字符串,其中某些字符已被十六进制转义序列替换。 描述 转义函数是全局对象的属性。除了:@*_+-./以外,特殊字符被编码。 字符的十六进制形式(其代码单位值为0xFF或更少)是两位数字转义序列:%xx。对于具有更大代码单元的字符,使用四位格式%uxxxx . 不赞成。不适用于新网站。 MDN JavaScript引用-转义()

维基百科:

对于Unicode字符存在一种非标准编码:%uxxxx,其中xxxx是一个UTF-16代码单元,表示为四个十六进制数字。此行为不是由任何RFC指定的,而是由已拒绝 W3C指定的。ECMA-262的第三版仍然包括一个使用此语法的escape函数,以及encodeURIencodeURIComponent函数,它们将UTF-8编码应用于字符串,然后对结果字节进行百分比转义。 - Wikipedia -百分比编码-非标准实现

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50539403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档