首页 文章

浏览器编码URL的行为是什么?

提问于
浏览
1

我正在做一个测试,Firefox编码字符如何 .

但事实让我很困惑 .

HTML代码:

<html lang="zh_CN">
<head>
<title>some Chinese character</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<img src="http://localhost/xxx" />
</body>

xxx是一些汉字 . 这些字符必须编码为%xx格式才能通过HTTP传输 .

首先,我用UTF-8编码 source file . 使用firefox打开html文件 . img标签将发送请求,"xxx"字符由UTF8编码 .

  • (通过UTF8编码HTML源文件,charset = utf8,浏览器通过UTF编码URL)

我把meta改成 <meta http-equiv="Content-Type" content="text/html; charset=gbk"> 但没有改变 .

  • (通过UTF8编码HTML源文件,charset = gbk,浏览器通过UTF编码URL)

其次,我保存 source file in ANSI ,可能是GBK或GB2312 .

当charset = gbk时,仍然按UTF8编码字符 .

  • (由GBK编码HTML源文件,charset = gbk,浏览器通过UTF编码URL)

但是,当charset = utf8时,字符由GBK编码 . 顺便说一下,其他汉字不能以正确的方式显示,例如 Headers 中的字符串 .

  • (由GBK编码HTML源文件,charset = utf8,GBK浏览器编码URL)

如何控制浏览器的编码行为?

1 回答

  • 2

    对于URL编码,UTF-8是the standard . 如果您使用GBK对源文件进行物理编码,但在内容类型中使用 utf-8 ,那么您只是对浏览器撒谎并且会得到不一致或不起作用的结果 .

    当新URI方案定义表示由通用字符集[UCS]中的字符组成的文本数据的组件时,应首先根据UTF-8字符编码[STD63]将数据编码为八位字节;那么只有那些与未保留集合中的字符不对应的八位字节应该进行百分比编码 . 例如,字符A将表示为“A”,字符LATIN CAPITAL LETTER A WITH GRAVE将表示为“%C3%80”,字符KATAKANA LETTER A将表示为“%E3%82%A2

相关问题