我对网址中的Internet Explorer和UTF-8字符的行为有一个问题。当IE在Internet选项中取消选中"Send UTF-8 URLs"
时,我发现我的网站无法完成请求。
当我点击我网站上的链接在新页面中打开它时,我会收到404错误页面。当我在同一页面中打开链接(没有target =“_ blank”)时,链接可以正常工作。
在跟踪数据包时,我看到UTF8请求,它看起来像这样:
GET /%EB%89%B4%EC%8A%A4/ HTTP/1.1\r\n
对于404响应,无效请求如下所示:
GET /%B4%BA%BD%BA/ HTTP/1.1\r\n
请求的网址为/뉴스
。问题是,使用this site我设法看到第一个工作链接实际上是用UTF8编码的“뉴스”。第二个是相同的字符串,但在系统默认编码,即EUC-KR。
使用W3C i18n checker给了我这些结果:
Character encoding Code
HTTP Content-Type UTF-8 Content-Type: text/html; charset=UTF-8
Byte order mark (BOM) No
Meta tag UTF-8 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
Language Code
HTML tag ko <html xmlns="http://www.w3.org/1999/xhtml" lang="ko" xml:lang="ko">
HTTP Content-Language None found
Text direction Code
Default direction LTR (by default)
Class & id names Code
Non-ascii class or id names None
Non-NFC class or id names None
Request headers Code
Accept-Language en-US en Accept-Language: en-US,en;q=0.8
Accept-Charset ISO-8859-1 utf-8 * Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
所以,我现在遇到的问题是在新标签页中打开链接时, IE以系统默认编码格式编码URL 会破坏网站。对于那些关闭该选项的用户,我正在寻找一个解决方案,如何让IE将这些URL发送为UTF8 ?我可以添加一些元标记来执行此操作,或者我必须进行某种JS修改以解析所有URL或其他解决方案吗?
我在网上广泛搜索了这个,发现了很多关于UTF8的资源,但我没有解决这种情况,这涉及IE恢复到系统默认编码。
感谢您的时间。
答案 0 :(得分:1)
您应该对链接进行编码,您的网址在HTML4浏览器中是非法的,然后尝试通过随机操作来修复它。
因此<a href="/öäöä"></a>
在HTML4中无效,但<a href="/%C3%B6%C3%A4%C3%B6%C3%A4"></a>
有效且有效。