我知道对于ASCII字符,URL编码只是一个百分号和一个与该字符对应的十六进制数。但对于该范围之外的字符,十六进制编码由两个或多个%十六进制数组成。
例如,对于与十六进制值56CE对应的字符,根据标准.net / java API,URL编码不是%56CE而是"%e5%9b%8e"
因此,如果我们知道ASCII字符范围之外的字符的十六进制值,那么如何计算URL编码?换句话说,e5,9b,8e是如何从56CE中走出来的?我尝试转换为二进制文件并确实看到了最后2个数字的模式(%9b,%8e),但不知道%e5来自哪里。
答案 0 :(得分:2)
首先必须将Unicode代码点编码为字符集字节,然后您可以对这些字节进行url编码。在您的示例中,E5 9B 8E
是Unicode代码点U+56CE
的UTF-8编码字节,然后%E5%9B%8E
是UTF-8字节的url编码形式。