虽然现在做的项目都是国内用户使用,但说不准过几个月就可能做外国人的项目的,所以这个东西看看是有好处的.这一章就主要讲了字符集编码和语言标记两个东西,都是和语言有关的.
16.1 HTTP对国际性内容的劫持
-
客户端要怎样才能正确显示国际性内容
- 服务器
- 要设置content-type中的charset参数,告诉文档的字母表
- 设置content-language说明文档使用的语言
- 客户端
- 发送accept-charset告诉服务器支持哪些字符编码
- 发送content-language告诉服务器支持哪些语言
- 服务器
-
为什么编写国际化网站很累
- 标准文档很多
- 术语非常复杂且不统一
- 外语肯定也是一门槛
16.2 字符集charset
-
字符集的作用
- 把实体中的二进制码
- 转换成
- 特定字母表中的字符
-
字符集转码的步骤
- HTTP
- 先用字符集把二进制码解码成字符代码
- 再交字符代码对应到字符上
- 浏览器
- 使用字体和版式软件渲染字形
- HTTP
-
为什么浏览器编码格式不一样,会导致乱码
- 因为不同的字符集体中,字符代码是对应的不同的字符
- 比如A字符集中111代表的是你,B字符集中111代表的却是good
-
字符集由什么组成
- 字符编码方案
- 用于编码解码
- 已编码的字符集
- 即一个数组,包含字符和字符代码映射
- 字符编码方案
-
没有显示指定字符集的时候,接收方如何判断
- 对HTML来说
- 首先取<meta http-equiv="content-type" 的值
- 如果没有此meta,则扫描内容,根据内容推断
- 如果推断不出来,使iso-8859-1
- 对HTML来说
16.3 多语言编码
-
相关术语
- 字符
- 就是每个字啦,官方的说法是书写原子
- 字形
- 字符的表现形式
- 一个字符可以对应多个字形,就像草书,楷书等
- 字符代码
- 一个数字编号
- 可以简单的理解为字符集里面的下标
- 代码空间
- 计划用于字符代码的整数范围
- 字符库
- 全部字符的一个子集
- 比如3000个常用汉字
- 编码后的字符集
- 为每个字符分配代码空间中的一个代码(下标)
- 字符编码方案
- 把字符代码编码成二进制码的算法
- 字符
-
MIME中的charset和真实字符集的差别
- 通常把把content-type中的charset和accept-charset叫做字符集,但不准确
- 它实际是编码方案和编码后字符集的组合
-
ascii字符集
- 美国标准信息交换代码
- 代码值从0到127
- 只需要7个二进制码就可以覆盖整个代码空间
-
utf-8编码方案
- 无模态的变宽编码
- 完全没看懂
16.4 语言标记
-
什么是语言标记
- 命名口语的标准短语
- 比如汉语 -> zh
-
为什么需要语言标记
- 不同的人的喊法不一样,所以需要统一下
- 比如汉语有些人会说是普通话/中国话/中文
-
语言标记的组成部分
主标记-子标记-其他子标记- 主标记
- 表示语言
- 一般小写
- i表示标准化的非变种语言(比如人发明的外星语)
- x表示私有扩展的语言
- 子标记
- 表示国家
- 一般大写
- 其他子标记
- 自定义的
- 长度在8个字符以内
- 其他随意