0

我对 Internet Explorer 的行为和 URL 中的 UTF-8 字符有一个问题。我发现当 IE"Send UTF-8 URLs"在 Internet 选项中取消选中时,我的站点无法完成请求。

当我单击我网站上的链接以在新页面中打开它时,我得到一个 404 错误页面。当我在同一页面中打开链接(没有目标 =“_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

请求的 URL 是/뉴스。问题是,使用这个站点,我设法看到第一个工作链接实际上是用 UTF8 编码的“뉴스”。第二个是相同的字符串,但使用系统默认编码,即 EUC-KR。

使用W3C i18n 检查器给了我这些结果:

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 恢复为系统默认编码。

谢谢你的时间。

4

1 回答 1

1

你应该对你的链接进行编码,你的 URL 在 HTML4 浏览器中是非法的,然后尝试通过做一些随机的事情来修复它。

所以<a href="/öäöä"></a>在 HTML4 中无效,但<a href="/%C3%B6%C3%A4%C3%B6%C3%A4"></a>有效且有效。

于 2013-04-28T11:09:22.600 回答