当前位置: 首页 > 知识库问答 >
问题:

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

韩刚洁
2023-03-14

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

但事实让我困惑。

超文本标记语言代码:

<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源文件,字符集=UTF8,浏览器用UTF编码URL)

我把meta改成了

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

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

当字符集=gbk时,仍使用UTF8对字符进行编码。

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

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

  • (用GBK编码超文本标记语言源文件,charset=utf8,浏览器用GBK编码URL)

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


共有1个答案

楚骞尧
2023-03-14

UTF-8是URL编码的标准。如果您使用GBK对源文件进行物理编码,但在内容类型中使用utf-8,则您只是在向浏览器撒谎,将得到不一致或无效的结果。

当一个新的URI方案定义了一个表示由通用字符集[UCS]中的字符组成的文本数据的组件时,应首先根据UTF-8字符编码[STD63]将数据编码为八位字节;然后,只有那些与未保留集中的字符不对应的八位字节才应该进行百分比编码。例如,字符A将表示为“A”,带有GRAVE的拉丁大写字母A将表示为“À”,而片假名字母A将表示为“ア

 类似资料:
  • 问题内容: 我想知道是否有任何方法可以解析这样的URL: 进入 类似于Firefox进行的URL重写,即仅粘贴以前的URL,然后将其发送到服务器(除非有这样的站点,否则没有响应),然后从导航栏中复制URL并将其粘贴到其他位置。 使用给我这个(不需要的)输出: 不幸的是,我收到问题开头所示的字符串,因此直接使用不起作用。 我天真地尝试了这个: 并给出以下(更好的)输出: 但是我不确定是否有针对此问题

  • 我正在尝试以分块模式发送数据。正确设置所有标题,并相应地对数据进行编码。浏览器将我的响应识别为分块响应,接受标题并开始接收数据。 我希望浏览器会更新每个接收到的区块的页面,而不是等到所有区块都被接收,然后显示它们。这是预期的行为吗? 我希望看到每个块在收到后立即显示。使用时,每个块在收到后立即显示。为什么GUI浏览器不会发生同样的情况?他们是否在使用某种缓冲/缓存? 我将标头设置为,所以不确定它是

  • 本文向大家介绍浏览器中window.length的结果是什么?为什么?相关面试题,主要包含被问及浏览器中window.length的结果是什么?为什么?时的应答技巧和注意事项,需要的朋友参考一下 神奇的问题,神奇的答案

  • 我试图在一些servlet和jsp之间添加一个过滤器,以便在显示jsp之前登录的用户。问题是,我试图检索浏览器的网址,这是转发到登录页面,但我找不到如何。我尝试在过滤器中获取URI,并将其作为请求的属性发送给Connexion servlet,但是,它不起作用。

  • 所以我非常了解Restful URL设计。然而,对于不是单页应用程序(SPA)的传统网站,浏览器的URL设计如何。 出于本例的目的,让我们假设我们有一个Book数据库。让我们进一步假设我们创建了2个传统的HTML站点。 显示所有书籍的HTML表 用于显示一本书的HTML表单(空白或预先填充了书的详细信息) 浏览器只能进行GET和POST操作,除非有人使用JavaScript。考虑到上面的URL设计

  • 许多事件会自动触发浏览器执行某些行为。 例如: 点击一个链接 —— 触发导航(navigation)到该 URL。 点击表单的提交按钮 —— 触发提交到服务器的行为。 在文本上按下鼠标按钮并移动 —— 选中文本。 如果我们使用 JavaScript 处理一个事件,那么我们通常不希望发生相应的浏览器行为。而是想要实现其他行为进行替代。 阻止浏览器行为 有两种方式来告诉浏览器我们不希望它执行默认行为: