编码-乱码、二进制、bit-Byte

character encoding 字符编码

编码种类:几乎每个国家都有几种编码,全世界通用的是:unicode. 兼容性最好.

Unicode: Unicode UTF-7 UTF-8 UTF-16 UTF-32

中国大陆: GB 2312 EUC GBK(规定文件为GB13000) GB 18030 港澳台: 大五码 香港增补字符集 中文信息交换码(CCCII) 日本: ISO/IEC 2022 Shift JIS EUC 越南: 越南信息交换标准代码 印度: 印度文字信息交换码

二进制:

计算机根据有没有通电的真空管 来记录信息 通电就是1,没通电就是0; 所以电脑只认识 0/1 这个就是二进制

bit / byte

我们把0/1 称为 bit 但是bit实在太小 每份简单的数据都会使用8bits的大小来记录. 所以定义了 byte. 1Byte = 8 bits

编码系统:

计算机数据 是二进制的 人类数值运算是十进制的 人类文字则有很多语言

计算机要显示文字 就要进行一系列的转换才行 也就需要 编码系统(数值编码+文字编码).

数值编码:

十进制的 3456 = 310³ + 410² + 510¹ + 610⁰

二进制转十进制: 1101010 = 12⁶ + 12⁵ + 02⁴ + 12³ + 02² + 12¹ + 0*2⁰ =106

十进制转二进制: 106/2=53 整除 → 0
53/2=26+1 不整除 → 1 26/2=13 → 0 13/2=6+1 → 1 6/2=3 → 0 3/2=1+1 → 1 → 1

由下往上写 就是106 的二进制 表示 1101010

文字编码系统 也就是 字符对照表格.

文档电脑里面的实际资料一堆二进制的 010101001

编码系统: 用的是十进制 比如 65 对应 大写A 66 对应 大写B 67 对应 大写C

实际显示出来的资料 就是A B C

编译器: C C++ Java 等等 把英语 转译成电脑的01(机器语言) . 方便修改程序

没电的电脑是一堆废铁有电的电脑是一堆会电人的废铁. 软件才是电脑的灵魂.

软件分两大类: 一个是系统软件 一个是应用程序

由于电脑硬件根据是否通电只认识01 而01非常不利于程序员修改 光光转换编码就是个大工程 所以就有了编译器这个东西.

操作系统(operating system 也就是 OS )

操作系统的核心(kernel) 功能 : 管理所有的硬件, 让cpu开始判断逻辑 运算数值 让内存 载入/读取数据 让硬盘开始被存储 让网卡可以传输数据 等等 各种周边设备的运转

由于操作系统的核心非常重要, 万一被软件不小心停止掉或者破坏 会导致系统崩溃. 所以 操作系统的核心程序 在内存中是受到保护的,并且开机后 一直在内存中.

有了底层的操作系统 再配上相应的软件 就能为所欲为了.

**乱码原因: 编码对照表弄错(创建文件用的 a 编码 打开文件用的 b 编码) 导致乱码.

常用的英文编码表 ASCII系统 每个符号(英文.数字.符号) 都占用1bytes 也就是有2⁸=256种变化.

常用的文字编码系统 big5 每个中文字 占用2bytes 理论有2¹⁶ =65536 6万多个中文汉字 实际big5 编码只定义了一万多汉字 所以很多汉字不正常显示.

Unicode编码系统: UTF8 或者万国码. 为了解决big5 国际组织 跳出来定制了 汉字乱码这个问题

乱码实例:

Mac 文本乱码:

查看文件所用编码: vi 打开文件
命令输入 :set fileencoding 显示: fileencoding=gb18030 这个就是文本所用编码 转换编码 :set fileencoding=utf-8

Github Gui 中文乱码 原因:

乱码文件 文本编码用的 gb10830 什么的 而 git gui 默认用 utf-8 的 解决办法: 终端输入: git config —global gui.encoding utf-8 git 配置文件位置 /.gitconfig