对unicode字符进行URL编码的常用方法是将其拆分为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字符的非标准编码:%uxxxx,其中xxxx是表示为四个十六进制数字的Unicode值.任何RFC都未指定此行为,并且W3C已拒绝此行为.第三版ECMA-262仍然包含一个使用此语法的转义(字符串)函数,还包括一个encodeURI(uri)函数,它转换为UTF-8并对每个八位字节进行百分比编码.
所以,看起来完全取决于编写unncode方法的人......标准不是很有趣吗?