网页中的字符集编码与乱码(3)--响应头 Content-Type 中的 charset 编码

深入介绍了响应头 Response Headers 中的 Content-Type 中的 charset 信息的应用, 包括许多在静态文档和动态文档中的实验与测试的细节, 以及一些具体配置和与文档内编码声明的优先级问题.

在上一篇说完了如何 通过文档内的编码声明来确定网页的编码 通过文档内的编码声明来确定网页的编码, 这一篇则开始具体讲述如何通过响应头下的 Content-Type 条目中的 charset 信息来确定文档的编码, 包括如何去配置这个响应头, 以及一些具体的实验, 还有它与文档内编码声明的优先级选择问题.

content-type 中的 charset

通过前面的介绍, 你已经知道了所谓的"响应头下的 Content-Type 条目中的 charset 信息", 就是这样:

Response Headers Content-Type charset utf-8

或这样的东西:

Response Headers Content-Type charset gbk

它指出了这段响应流的编码.

继续阅读

网页中的字符集编码与乱码(2)--文档内编码声明(meta charset)

深入介绍了文档内编码声明的应用, 包括许多在静态文档和动态文档中的实验与测试的细节, 以及其它的一些注意事项等.

接着 上一篇中的讨论, 也是先从"文档内编码声明"讲起, 因为它是最直观也最容易控制的.

不过事实上也没有那么容易, 它还是很容易受各种因素干扰, 下面会详细介绍整个过程, 囊括了静态文档响应和动态文档响应两种情况, 以及各种其它注意事项.

文档内的 meta charset 编码声明

通过之前的介绍, 你已经知道了所谓的文档内 meta charset 声明:

<meta charset="gbk">

以上为 html5 的标准写法. 又或者这样(html4)

<meta http-equiv="Content-Type" content="text/html; charset=gbk">

继续阅读

网页中的字符集编码与乱码(1)--概述

授人以鱼不如授人以渔, 在这里我会告诉有关网页中的编码的一些事实与结论, 但我更希望传达给你分析问题的方法, 当你遇到乱码困扰时, 你能够独立迅速地分析并解决问题.

在之前谈了很多关于 字符集编码与乱码 的基础知识, 可以说, 如果你掌握了这些, 对于各种乱码问题, 就有了一个良好的基础, 基本能够分析甚至独立地解决各类的乱码问题.

自然, 基础问题的重要性无需多言, 但另一方面, 具体的问题也同样很重要. 据我的观察, 具体的问题有很多是关于 web 开发方面所碰到的乱码, 尽管从原理方面来说, 道理都是一样的, 但导致问题产生的许多细节还是值得一说的, 所以这次也打算具体谈谈这些方面.

首先谈网页中的编码与乱码问题, 之后还会谈表单的编码, 后台接收参数时的解码与乱码, url(uri) 的编码与解码, 文件下载中文件名的编码乃至数据库中的编码等等.

这些具体问题的分析要建立在字符集编码基础知识之上, 所以, 如果你觉得自己在基础方面还不够扎实,

比如, 字符集与编码的联系与区别是什么? Unicode 具体是如何编码的? 几种 Unicode 编码实现间的联系与区别是什么? 什么是 UTF-16 的代理对等等,

如果你尚不能很清晰地回答以上一些问题, 那么我还是建议你先看看那些基础的介绍, 这样在分析 web 开发中遇到的具体编码及乱码问题时, 理解得会更好.

继续阅读

在开发者工具中查看响应头的字符集编码信息

介绍了如何在浏览器的开发者工具中查看响应头(Response Headers)下的 Content-type 中的字符集编码信息

要想查看某个文档的响应头中的字符集编码信息, 以 Chrome 浏览器为例, 首先打开"开发者工具":

可以按快捷键 F12, 或单击窗口右上角的选项按钮, 然后选择 "更多工具--开发者工具"即可打开"开发者工具"窗口.

如下图打开 我的网站 为例所示:

开发者工具

缺省情况下显示在原窗口下面, 可以选择最右边三个竖点的按钮, 然后在 dock side 中选择不同的显示位置.

继续阅读

字符集与编码(一)--charset vs encoding

摘要: charset 与 encoding 的差别在哪? charset=utf-8 与 encoding=utf8 哪种写法更规范? 本文将探讨这两者的联系与区别.

许多时候, 字符集与编码这两个概念常被混为一谈, 但两者是有差别的, 作为深入理解的第一步, 首先要明确: 字符集字符集编码 是两个不同层面的概念:

  • charset 是 character set 的简写, 即 字符集.
  • encoding 是 charset encoding 的简写, 即 字符集编码, 简称 编码.

继续阅读