Unicode URL解码

Unicode URL解码,unicode,urldecode,Unicode,Urldecode,URL编码unicode字符的常用方法是将其拆分为2%的HH代码。(\u4161=>%41%61) 但是,在解码时如何区分unicode?您如何知道%41%61是\u4161与\x41\x61(“Aa”) 是需要编码的8位字符,前面有%00 或者,unicode字符应该丢失/拆分吗?根据: 现行标准 通用URI语法要求使用新的URI方案 规定了 URI中的字符数据必须以 效果,表示来自 不带平移的未保留集, 并应将所有其他 根据 UTF-8,然后对其进行百分比编码 价值观这项要求是 于2005年

URL编码unicode字符的常用方法是将其拆分为2%的HH代码。(\u4161=>%41%61

但是,在解码时如何区分unicode?您如何知道%41%61\u4161\x41\x61(“Aa”)

是需要编码的8位字符,前面有%00

或者,unicode字符应该丢失/拆分吗?

根据:

现行标准 通用URI语法要求使用新的URI方案 规定了 URI中的字符数据必须以 效果,表示来自 不带平移的未保留集, 并应将所有其他 根据 UTF-8,然后对其进行百分比编码 价值观这项要求是 于2005年1月推出 RFC 3986的出版。URI方案 在此日期之前推出的产品不受欢迎 装腔作势

当前未解决的问题 规范是如何处理的 编码字符数据。例如 在计算机中,字符数据显示 以编码形式,在某种程度上,以及 因此,可以将其视为二进制或二进制 数据或作为字符数据时 映射到URI字符。大概 这取决于URI方案 说明这一点的规范 可能性和要求一个或多个 其他,但在实践中,很少有, 实际上是这样

非标准实现 存在非标准编码 对于Unicode字符:%uxxx,其中 xxxx是一个Unicode值,表示为 四个十六进制数字。这种行为 未由任何RFC指定,并且具有 被W3C拒绝。第三 ECMA-262版本仍然包括 使用此函数的转义(字符串)函数 语法,但也是一个encodeURI(uri) 转换为UTF-8和 百分比编码每个八位字节


所以,看起来这完全取决于编写unencode方法的人……标准不是很有趣吗?

我一直在做的是首先对Unicode字符串进行UTF-8编码,使其成为一系列8位字符,然后用%HH转义其中的任何字符


另外,我只能希望非标准实现(%uxxx)的数量很少。

由于URI是在unicode出现之前引入的,或者至少是在广泛使用之前引入的,我想这是一个非常具体的实现问题。UTF-8编码您的文本,然后按正常值转义听起来是最好的主意,因为这与任何ASCII/ANSI系统完全向后兼容,尽管您可能会得到一两个奇怪的wierd字符


在另一端,要解码,您需要取消文本的scape,并获得一个UTF-8字符串。如果有人使用较旧的系统试图以ASCII/ANSI格式向您发送一些数据,则不会造成任何损害,这(几乎)已经是UTF-8编码的。

这正是应该使用的。你提到的角色可能看起来很奇怪,但是没有一个是控制角色(UTF-8就是这样工作的),这真的很好。