学习笔记 HTTP权威指南 第16章 国际化

394 阅读3分钟

虽然现在做的项目都是国内用户使用,但说不准过几个月就可能做外国人的项目的,所以这个东西看看是有好处的.这一章就主要讲了字符集编码和语言标记两个东西,都是和语言有关的.

16.1 HTTP对国际性内容的劫持

  • 客户端要怎样才能正确显示国际性内容

    • 服务器
      • 要设置content-type中的charset参数,告诉文档的字母表
      • 设置content-language说明文档使用的语言
    • 客户端
      • 发送accept-charset告诉服务器支持哪些字符编码
      • 发送content-language告诉服务器支持哪些语言
  • 为什么编写国际化网站很累

    • 标准文档很多
    • 术语非常复杂且不统一
    • 外语肯定也是一门槛

16.2 字符集charset

  • 字符集的作用

    • 把实体中的二进制码
    • 转换成
    • 特定字母表中的字符
  • 字符集转码的步骤

    • HTTP
      • 先用字符集把二进制码解码成字符代码
      • 再交字符代码对应到字符上
    • 浏览器
      • 使用字体和版式软件渲染字形
  • 为什么浏览器编码格式不一样,会导致乱码

    • 因为不同的字符集体中,字符代码是对应的不同的字符
    • 比如A字符集中111代表的是你,B字符集中111代表的却是good
  • 字符集由什么组成

    • 字符编码方案
      • 用于编码解码
    • 已编码的字符集
      • 即一个数组,包含字符和字符代码映射
  • 没有显示指定字符集的时候,接收方如何判断

    • 对HTML来说
      • 首先取<meta http-equiv="content-type" 的值
      • 如果没有此meta,则扫描内容,根据内容推断
      • 如果推断不出来,使iso-8859-1

16.3 多语言编码

  • 相关术语

    • 字符
      • 就是每个字啦,官方的说法是书写原子
    • 字形
      • 字符的表现形式
      • 一个字符可以对应多个字形,就像草书,楷书等
    • 字符代码
      • 一个数字编号
      • 可以简单的理解为字符集里面的下标
    • 代码空间
      • 计划用于字符代码的整数范围
    • 字符库
      • 全部字符的一个子集
      • 比如3000个常用汉字
    • 编码后的字符集
      • 为每个字符分配代码空间中的一个代码(下标)
    • 字符编码方案
      • 把字符代码编码成二进制码的算法
  • MIME中的charset和真实字符集的差别

    • 通常把把content-type中的charset和accept-charset叫做字符集,但不准确
    • 它实际是编码方案和编码后字符集的组合
  • ascii字符集

    • 美国标准信息交换代码
    • 代码值从0到127
    • 只需要7个二进制码就可以覆盖整个代码空间
  • utf-8编码方案

    • 无模态的变宽编码
    • 完全没看懂

16.4 语言标记

  • 什么是语言标记

    • 命名口语的标准短语
    • 比如汉语 -> zh
  • 为什么需要语言标记

    • 不同的人的喊法不一样,所以需要统一下
    • 比如汉语有些人会说是普通话/中国话/中文
  • 语言标记的组成部分

    • 主标记-子标记-其他子标记
    • 主标记
      • 表示语言
      • 一般小写
      • i表示标准化的非变种语言(比如人发明的外星语)
      • x表示私有扩展的语言
    • 子标记
      • 表示国家
      • 一般大写
    • 其他子标记
      • 自定义的
      • 长度在8个字符以内
      • 其他随意

TODO

16.3 utf-8编码方案的原理