对于内容类型建议字符数据的 HTTP 响应,如果未指定,客户端应采用哪种字符集?

2023-12-22

如果 Content-Type 标头中未指定字符集参数,RFC2616 第 3.7.1 节 http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html似乎意味着 ISO8859-1 应该被假定为子类型“文本”的媒体类型:

当没有明确的字符集参数时 由发送者提供,媒体子类型 “文本”类型的定义为 默认字符集值为 通过 HTTP 接收时为“ISO-8859-1”。

字符集以外的数据 “ISO-8859-1”或其子集必须是 用适当的字符集标记 价值。

然而,我经常看到应用程序提供带有 Content-Type 值的 Javascript 文件,例如“application/x-javascript”(即没有字符集参数),即使这些脚本包含非 ASCII UTF-8 字符,如果解释这些字符就会损坏作为 ISO8859-1。

这似乎不会给客户带来问题。客户端如何知道将字节解释为 UTF-8?对于其他字符数据子类型是否存在暗示 UTF-8 应为默认值的规则?这是在哪里记录的?


我完全检查过所有主要浏览器(IE、FF 和 Opera)忽略 RFC 规范在这部分。

如果您对通过数据自动检测字符集的算法感兴趣,请查看火狐浏览器 http://www.mozilla.org/projects/intl/UniversalCharsetDetection.html link.

关于内容类型的一个小注释:只有文本才有字符集。可以合理地假设浏览器处理 application/x-javascript 与处理 text/javascript 相同(IE6 除外,但这是另一个主题)。

IE浏览器将使用默认字符集(可能存储在注册表中),如下所示:

默认情况下,Internet Explorer 使用 HTTP 中指定的字符集 服务器返回的内容类型 确定这个翻译。如果这 未给出参数,互联网 资源管理器使用的字符集 由元元素指定 文档。它使用用户的 优先如果没有元元素 指定的。

Source: http://msdn.microsoft.com/en-us/library/ms537500%28VS.85%29.aspx http://msdn.microsoft.com/en-us/library/ms537500%28VS.85%29.aspx

火狐浏览器尝试自动检测字符集,如下所示:

本文提出了三种类型的自动检测方法来确定文档的编码没有明确的字符集声明.

Source: http://www.mozilla.org/projects/intl/UniversalCharsetDetection.html http://www.mozilla.org/projects/intl/UniversalCharsetDetection.html

Opera也使用自动检测,如文档所示:

如果传输协议提供编码名称,则使用该名称。如果没有,Opera 将在页面中查找字符集声明。如果缺少此项,Opera 将尝试自动检测编码,使用域名查看该脚本是否是 CJK 脚本,如果是的话是哪一个。 Opera 还可以自动检测 UTF-8。

Source: http://www.opera.com/docs/specs/opera9/ http://www.opera.com/docs/specs/opera9/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对于内容类型建议字符数据的 HTTP 响应,如果未指定,客户端应采用哪种字符集? 的相关文章

随机推荐

  • 根本无法让键盘加速器工作

    我也已将这个问题发布到 Microsoft 的文档here https learn microsoft com en us windows uwp design input keyboard accelerators custom keyb
  • C - 浮点数的序列化(浮点数、双精度数)

    如何将浮点数转换为字节序列以便可以持久保存在文件中 这种算法必须快速且高度可移植 它还必须允许相反的操作 即反序列化 如果每个值只需要非常少量的多余位 持久空间 那就太好了 假设您使用主流编译器 C 和 C 中的浮点值遵循 IEEE 标准
  • Java 随机种子

    我需要测试一个 Java 程序 20 次 并且需要设置随机种子以便可以重复测试 如果我将初始种子设置为 0 然后在每次运行时递增 1 即 1 2 3 等 即使种子相距不远 此方法是否仍能确保完全随机性 谢谢 任何种子都将提供与标准的任何其他
  • SQL Server:如何导出整个数据库?

    我需要从一台服务器导出数据库并将其导入另一台服务器 如何将整个数据库导出到一个文件或两个文件 mdf ldf 任一选项都可以 如何使用 ssms 将其导入新服务器 小马的指示中写道 在到某个时间点文本框中 要么保留默认值 最近的 可能 或选
  • 原子比较(不等于)和交换

    我想使用原子比较和交换 但我不想等于 而是仅在内存位置不等于旧值时才交换 在C语言中可以吗 这个怎么样 void compare and swap if not equal word t const required non value w
  • 处理事件驱动世界中的异常

    我试图了解如何使用微服务 使用 apache kafka 在事件驱动的世界中处理异常 例如 如果您采用以下订单场景 则需要执行以下操作才能完成订单 1 向支付服务提供商授权支付 2 保留库存商品 3 1 通过支付服务提供商获取支付信息 3
  • 我的 rspec 测试无法通过:Michael Hartl 的 Rails 教程

    我正在第五章末尾做练习 我应该测试链接是否转到正确的页面 这是我的测试代码 require spec helper describe LayoutLinks do it should have the right links on the
  • 为什么无法获取已启动进程的主窗口句柄?

    我遇到过这样的情况 我正在代码中启动一个进程以设置 IPC 通道 我正在启动的进程是一个没有 CLR 支持的 MFC 应用程序 我从中启动此过程的应用程序是 WPF 应用程序中的 C 模块 我认为这对我的问题并不重要 这适用于支持 CLR
  • SIP 软电话客户端的 java SDK

    我想用java构建一个SIP客户端 将向 SIP 注册器注册并能够调用另一个 sip 客户端的 java 类 有什么建议么 如果你愿意的话 你可以尝试我的软件电话 它提供了一个非常简单的API 它被称为同行 http peers sourc
  • 自动映射器映射下拉菜单的 IEnumerable

    Problem 我目前正在将自动映射添加到我的 MVC 项目中 但我陷入了困境 现在我有一个用户模型用于表示数据库中的数据 我必须将该模型映射到 EditUserModel 该模型将在调用 Edit 方法时使用 EditUserModel
  • 尝试调用 Provider.of。这可能是一个错误,因此不受支持

    尝试获取当前用户的 uid 并发送短信 但遇到 Provider 实现错误 尝试致电 Provider of 这可能是一个错误 并且是 因此不受支持 如果你想公开一个变量 可以 任何事情 考虑改变dynamic to Object反而 pa
  • 在 Twig 中将字符串转换为浮点型

    基本上 我设置了一个名为 评级 的参数 它等于一个product DETAILS STAR RATING 它是从数据库驱动字段导入的一个值 该字段恰好是一个字符串 我想将该值乘以 20 但是由于 评级 是一个字符串 我无法将其相乘 如何将字
  • 无法将 Windows 主机目录挂载到 Docker 容器

    我使用的是带有 Docker 版本 1 12 0 rc3 beta18 内部版本 5226 的 Windows 10 Pro 我想在 Windows 机器上使用 Docker 进行 PHP 开发 我尝试了将主机目录安装到 Docker 容器
  • Tensorflow 数据输入切换:训练/验证

    在我从方便但速度较差的占位符切换之后 我的数据通过队列运行器进入我的图表 在每个训练周期之后 我希望运行一次验证 除了训练过程之外 验证过程使用不同的数据 没有增强 也没有洗牌 问题很简单 我如何切换这些东西 一些观察 我无法切换shuff
  • Groovy:带有嵌入引号的字符串未按预期执行

    这很奇怪 使用常规字符串来保存一些要执行的命令行 我发现有时如果字符串中有引号字符 则执行会默默失败 搞什么 已更新 见下文 这是我的测试程序 print 1 grep nameserver etc resolv conf execute
  • Google Speech API v1beta1 很慢?

    当得知 Google 终于为开发者发布了官方语音 API 时 我非常兴奋 我一直对 Google 语音识别在 Android Chrome 和其他产品中的出色表现感到惊讶 我创建了一个 Google Cloud 帐户 启用了语音 API 并
  • 将 X11 窗口保持在另一个窗口之上

    我有两个 x11 窗口 它们需要在彼此之间保持一定的堆叠顺序 即一个窗口需要保持在另一个窗口之上 我不关心应用程序之外的其他窗口 通常 我会为此使用父 子窗口 但由于 X11 将子窗口剪辑到父窗口 所以我必须伪造它 我尝试了各种方法来保留和
  • 在 Python/Pyodbc 中查询 Teradata 时出现问题

    我正在尝试使用 PyODBC 在 Python 中查询 Teradata 数据库 与数据库的连接已建立正常 但是 当我尝试获取结果时 遇到了此错误 十进制文字无效 u 请帮助 我使用的是 RHEL6 Python 2 7 3 这是代码和结果
  • XElement 和列表

    我有一个具有以下属性的类 public class Author public string FirstName get set public string LastName get set 接下来 我有一个作者列表 如下所示 List
  • 对于内容类型建议字符数据的 HTTP 响应,如果未指定,客户端应采用哪种字符集?

    如果 Content Type 标头中未指定字符集参数 RFC2616 第 3 7 1 节 http www w3 org Protocols rfc2616 rfc2616 sec3 html似乎意味着 ISO8859 1 应该被假定为子