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

时间:2012-12-22 08:21:02

标签: html http browser encoding

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

但事实让我困惑。

HTML code:

<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中编码源文件。使用firefox打开html文件。 img标签将发送请求,“xxx”字符由UTF8编码。

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

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

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

其次,我将源文件保存为ANSI ,可能是GBK或GB2312。

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

  • 按GBK编码HTML源文件,charset = gbk ,浏览器按UTF编码URL)

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

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

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

1 个答案:

答案 0 :(得分:2)

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

  

当新的URI方案定义表示文本数据的组件时   由通用字符集[UCS]中的字符组成   首先应根据UTF-8将数据编码为八位字节   字符编码[STD63];然后只有那些没有的八位字节   对应于未保留集中的字符应为百分比 -   编码。例如,字符A将表示为“A”,   将代表拉丁文大写字母A WITH GRAVE   作为“%C3%80”,将代表角色KATAKANA LETTER A.   为“%E3%82%A2