Skip to content

encode_0

wzs edited this page Aug 27, 2018 · 1 revision

编码

由来_文字输入的前因后果

人和计算机的信息交换

人输入信息的方式有多种, 比如说 语音, 视频, 文字等等, 但是计算机只认识二进制, 那么问题就来了, 如何翻译给计算机呢?

以 文字 举例, 用户输入可以分为以下几个阶段:

  1. 输入
  2. 汉字键盘码
  3. 汉字交换码
  4. 汉字内部码
  5. 汉字地址码
  6. 汉字字形码
  7. 显示在屏幕

编码/解码: 信息从一种形式或格式转换为另一种形式的过程

步骤详解

键盘码

  • 一种比如说是鼠标的点击, 对应的是操作系统的键值
  • 键盘输入转换为ascii码. 过程如下:
    • 用户输入
    • 输入码/汉字输入码(使用五笔, 拼音等 编码规则)
    • 键盘
    • 键盘扫描码
    • BIOS键盘驱动程序
    • 操作系统
    • 程序消息

交换码/内部码

交换码 , 就是我们所说的 编码集+字符集

  • 举例: GB2312全称《信息交换用汉字编码字符集·基本集》
  • 交换码作用: 实现将输入的文字转换为 内部码 : 计算机识别的二进制格式

字符集 和 编码集.

  • 字符集: 一个文字系统所支持的所有抽象字符的集合.
  • 编码集: 将字符集转换为计算机可接受的形式的信息
  • 举个栗子
    • unicode是字符集
    • ascii既是编码集, 也是字符集
    • utf-8则是编码集

汉字地址码 和 字形码

汉字地址码字形码 涉及到汉字的显示问题, 比如点阵显示, 矢量显示, 实现后就是我们看到的各种字体了.

粗略讲下:

  • 点阵表示字型: 汉字字型码指的是这个汉字字型点阵的代码. 根据输出汉字的要求不同, 点阵的多少也不同
    • 简易型汉字为16*16点阵
    • 提高型汉字为24*24点阵, 32*32点阵, 48*48点阵等等
  • 矢量表示字型: 存储描述汉字字型的轮廓特征, 当要输出汉字时, 通过计算机的计算, 由汉字字型描述生成所需大小和形状的汉字点阵.
    • 矢量化字型描述与最终文字显示的大小, 分辨率无关, 因此可以产生高质量的汉字输出
    • Windows中使用的TrueType技术就是汉字的矢量表示方式.
  • 其他: 比如apple的边缘模糊技术,
  • 估计是图形学方面的知识. 留待以后感兴趣了再细看.

计算机和计算机的信息交换

使用内部码传递信息

ETC

  • 坑1: 早期网关(硬件)采用7bit位传输, 为了解决这个问题, 诞生了后来的base64
    • 有兴趣的同学可以了解下 base64
  • 有相关兴趣的同学可以研究下 中文信息处理 这门课, 以及可以自己动手做下demo
  • 提升理解的问题
    • 用户A输入信息到用户B显示信息的过程
    • 字符集和编码集区别
    • Why 1B==8bit
  • UTF-8 GBK UTF8 GB2312 之间的区别和关系
  • base64相关
  • WHY IS A BYTE 8 BITS? OR IS IT?
Clone this wiki locally