Internet explorer 如何在Javascript中使用重音字符对URL进行编码?
我对IE的URL有一个奇怪的问题,如果我在URL中传递场景,它将不起作用,而且它似乎可以完美地用于其他浏览器 在IE中,URL显示为:Internet explorer 如何在Javascript中使用重音字符对URL进行编码?,internet-explorer,url,encoding,Internet Explorer,Url,Encoding,我对IE的URL有一个奇怪的问题,如果我在URL中传递场景,它将不起作用,而且它似乎可以完美地用于其他浏览器 在IE中,URL显示为: …/search.aspx?关键字=sc%c3%83%c2%a9nario 在FireFox中,URL显示为: …/search.aspx?关键字=sc%C3%A9nario 在IE中,URL中断,Firefox工作正常,我是否需要在IE中进行URL解码来处理此问题?虽然您没有说明如何“传递”字符串,但我可以告诉您发生了什么 字符é具有代码点E9。在UTF-8中
…/search.aspx?关键字=sc%c3%83%c2%a9nario 在FireFox中,URL显示为:
…/search.aspx?关键字=sc%C3%A9nario
在IE中,URL中断,Firefox工作正常,我是否需要在IE中进行URL解码来处理此问题?虽然您没有说明如何“传递”字符串,但我可以告诉您发生了什么 字符
é
具有代码点E9。在UTF-8中,这被编码为两个字节:C3 A9。因此,在URL中显示“scénario”的正确方法是
sc%C3%A9nario
现在,如果您获取这个字符串,查看每个字节并假设它们是字符,然后再次进行UTF-8编码,会发生什么?将会发生的是
- s->s
- c->c
- %C3将被解释为具有代码点C3的字符,即Ã,在UTF-8中为C3 83
- %A9将被解释为带有代码点A9的字符,即©在UTF-8中为C2 A9
- n->n
- 等等
您需要了解字符串是如何“编码两次”的。如何在URL中传递它?