Skip to content

什麼是資料的編碼與傳輸?

前言

當你給朋友發一張照片、發一條微信,或者下載一個幾 GB 的遊戲時,這些資訊是怎麼穿過大半個地球、完好無損地出現在你的螢幕上的?本章节會圍繞一個經常困擾新手的問題展開:為什麼我收到的檔案變成了亂碼?

這篇文章會帶你學什麼?

學完這章後,你將獲得:

  • 亂碼排查能力:遇到「檔案打開是亂碼」時,能從編碼角度分析原因
  • 跨平台意識:處理資料交換時,知道為什麼要關注編碼格式和位元組序
  • 編碼世界觀:理解電腦如何用 0 和 1 表示世間萬物
  • 後續學習基礎:為網路協定、檔案格式、序列化技術打下基礎
章节內容核心概念
第 1 章字元編碼ASCII、UTF-8、GBK
第 2 章資料儲存二進位、位元組序
第 3 章資料傳輸序列化、壓縮

0. 引言:為什麼檔案會變成「天書」?

想象一下,你收到一份重要的同事發來的檔案,雙擊打開一看,裡面全是奇怪的文字。

直覺上,你肯定覺得:是不是檔案在傳送的過程中損壞了?

但實際上,絕大多數所謂的「檔案損壞」,真相只有一個——你的電腦「沒找對閱讀規則」

動手試試看

你收到的文件内容(字节流)
0xE40xBD0xA00xE50xA50xBD
用什么规则来「读」它?
正确(UTF-8)
你好
发件人用 UTF-8 存储了「你好」,你也用 UTF-8 读,当然正确。
核心领悟:字节本身没有含义,编码规则决定了字节变成什么字。发件人用 UTF-8 存,你用 GBK 读,当然面目全非。

核心領悟:沒對齊的密碼本

位元組(0和1序列)本身是沒有絕對意義的,是人類制定的「編碼規則」賦予了它們意義。

發件人用 UTF-8 密碼本把漢字翻譯成了數字發給你,你如果硬要用 GBK 密碼本去解讀這些數字,拼出來的當然全是亂碼。


1. 什麼是資料編碼?(把萬物變成數字)

資料編碼(Encoding),就是建立一本「雙向翻譯詞典」,把現實世界中複雜多樣的資訊(文字、色彩、聲音),強制對應成電腦能理解的 0 和 1 的規則。

1.1 把文字變成數字:從 ASCII 到萬國碼

第一階段:ASCII 的小天地

美國人制定了一本很薄的密碼本叫做 ASCII 碼。它只規定了 128 個符號。

第二階段:群雄割據的戰國時代

後來,電腦走向了世界。大家發現:漢字有幾萬個,日本還有假名,光靠 1 個位元組根本裝不下!

於是,中國搞了 GBK 密碼本,日本搞了 Shift_JIS……世界陷入了混亂。

第三階段:天下一統的 Unicode(萬國碼)

最後,電腦界的大神們坐在一起商量,做一本收錄地球上所有符號的超級大字典,這就是 Unicode(萬國碼)。而你經常聽到的 UTF-8,就是 Unicode 字典目前最流行的一套「儲存規則」。

動手試試看

字符Unicode 码点UTF-8 字节字节数
U+4F60
0xE40xBD0xA0
3 字节
U+597D
0xE50xA50xBD
3 字节
U+0020
0x20
1 字节
HU+0048
0x48
1 字节
eU+0065
0x65
1 字节
lU+006C
0x6C
1 字节
lU+006C
0x6C
1 字节
oU+006F
0x6F
1 字节
字符数8
UTF-8 总字节数12
平均每字符1.5 字节
提示:英文字母在 UTF-8 中只占 1 字节,常用汉字占 3 字节,Emoji 占 4 字节。这就是为什么处理中文文本时,“字符数”和“字节数”是两个完全不同的概念。

驚奇發現

  • 一個英文字母在 UTF-8 裡只佔 1 個位元組
  • 一個普通漢字通常佔 3 個位元組
  • 一個 Emoji 表情(🎉),竟然需要 4 個位元組

1.2 顏色和聲音怎麼變數字?

  • 圖片的編碼: 把一張照片無限放大,它其實是由幾百萬個發光的小方塊(像素)組成的。

    🖼️ 图片是如何变成数字的?(悬停在像素方块上看看)
    💻 计算机实际看到的:
    #F3F4F6#F3F4F6#F3F4F6#F3F4F6#F3F4F6#F3F4F6#F3F4F6#F3F4F6#F3F4F6#3B82F6#3B82F6#F3F4F6#F3F4F6#3B82F6#3B82F6#F3F4F6#F3F4F6#3B82F6#3B82F6#F3F4F6#F3F4F6#3B82F6#3B82F6#F3F4F6#F3F4F6#F3F4F6#F3F4F6#F3F4F6#F3F4F6#F3F4F6#F3F4F6#F3F4F6#3B82F6#F3F4F6#F3F4F6#F3F4F6#F3F4F6#F3F4F6#F3F4F6#3B82F6#F3F4F6#3B82F6#F3F4F6#F3F4F6#F3F4F6#F3F4F6#3B82F6#F3F4F6#F3F4F6#F3F4F6#3B82F6#3B82F6#3B82F6#3B82F6#F3F4F6#F3F4F6#F3F4F6#F3F4F6#F3F4F6#F3F4F6#F3F4F6#F3F4F6#F3F4F6#F3F4F6
    将鼠标悬停在左侧画布的方块上
    💡 原理解析:一张 1080p 的高清壁纸,其实就是 207 万 个像左边这样密密麻麻的小色块组成的。计算机把这两百多万个颜色的编号(如 #FF0000)按顺序记录下来,图片就变成了几百万个数字的集合。
  • 聲音的編碼: 聲音本質是空氣的震盪波。如果我們每秒去測量這個波浪的高度 44100 次(取樣),連續的聲波就變成了離散的數字陣列。

    声音是如何变成数字的?(拖拽滑块调整采样率)
    低音质 (严重失真)高音质 (贴近原声)
    转译后的数字(高度):
    0530-520530-520
    说明:灰色的虚线是真实的连贯声波(大自然的模拟信号)。蓝色柱子是我们每隔一段时间去测量它的高度(数字信号)。采样频率越密集,记录下来的数字就越多,恢复出来的声音就越清晰逼真,但产生的文件也随之飙升。

2. 儲存橋樑:發出去之前,總得先放個地方

為了用盡可能少的錢換取盡可能快的電腦執行速度,電腦科學家設計了「儲存層次結構」(儲存金字塔)。

L0CPU 寄存器极快
L1CPU 缓存(Cache)很快
L2内存(RAM)
L3SSD(固态硬盘)较快
L4机械硬盘(HDD)
L2内存(RAM)
访问速度几十 ~ 100 纳秒
典型容量几 GB ~ 几百 GB
单价(每GB)适中(约 ¥30/GB)
生活类比:你打开的浏览器标签页——断电就没了,但当前工作全在这里。
实际用途:运行中的程序、操作系统、当前打开的文件都住在内存里。内存不够了→程序卡顿甚至崩溃。
提示:越快越贵,越慢越大。CPU 缓存极快但只有几 MB;机械硬盘虽慢但便宜又能存 TB。操作系统会自动在各层之间搬运数据——这叫存储层次结构

核心領悟:作業系統的搬運工哲學

世界上沒有完美的儲存器。因此,作業系統(如 Windows, macOS)就像一個極度聰明、一刻不停的倉庫管理員:

  1. 它把海量的電影、遊戲塞在速度慢、容量大(便宜)的倉庫——SSD 或機械硬碟裡。
  2. 當你要玩遊戲時,它趕緊把相關的檔案,從硬碟搬到速度極快但容量有限的操作台——記憶體(RAM)上。
  3. 當你關閉遊戲時,它再把記憶體清空,騰出操作台給別的檔案用。

3. 什麼是資料傳輸?(讓 0 和 1 出發旅行)

3.1 硬體與區域網路傳輸:一條導線的物理極限

今天手機的 Type-C、外部的 USB 和主機板內部的 PCIe 介面,用的全都是串列傳輸(Serial)

选择传输方式,然后点"发送数据包"
Tx
发送方
10110010
1 条线
Rx
接收方
已发送0 / 8 位
传输速率1 位/次
状态就绪
提示:等等,串行不是更慢吗?
表面上是的——但现代串行接口(USB 4、PCIe)传输频率高达每秒 数百亿次,而并行线路之间会产生 信号串扰(Crosstalk),反而限制了速度。所以高速接口全面转向了串行。

為什麼「一條小路」擊敗了「八車道」?

並排的幾根線上的微弱電流會產生極強的電磁波互相干擾(串擾 Crosstalk);而且你根本無法保證傳送端同時發出的 8 個訊號,能完美同時到達終點線。

所以,與其花天價去調平 8 條賽道,不如把所有技術資源砸在 1 輛跑車上,把它拉到光速。這就是串列介面一統天下的物理真相。

3.2 廣域網與網際網路傳輸:漂洋過海的防丟藝術

當你用微信傳送 1GB 的超大影片時:

  1. 分包(Packetization):網路會把影片切成幾萬個信封大小的「資料包」。
  2. 校驗和(Checksum):為防止途中資料損壞,系統會計算一個「特徵碼」貼在上面。
  3. TCP 重發與確認:接收方拿到信封,先驗算一遍特徵碼。如果不對,就會要求重發。

正因為有了 TCP(傳輸控制協定) 的極其嚴密的切包對帳機制,你在不穩定的 WiFi 下下載檔案,下載完的那一瞬間,檔案也必定是 100% 完整、0 損壞的。


4. 終局實戰:從拍下快門到發朋友圈的全流程

📸 照片上传的完整旅程从按下快门到云端备份,数据经历了什么?
1
编码
2
存储
3
传输
🔢编码阶段等待执行
☀️
光线
物理信号
📷
传感器
CMOS/CCD
📊
RAW 数据
24MB / 4860万像素
🗜️
JPEG 压缩
有损压缩
📄
JPEG 文件
3.2MB
第一步:编码 — 把光变成数字
1相机传感器把光信号转换成 RGB 数值(每个像素 3 × 8 bit = 24 bit)
2整张照片 4860 万像素 × 24 bit ≈ 140 MB 的原始数据
3JPEG 算法分析像素相似性,去掉人眼不敏感的信息,压缩到 3 MB

5. 名詞對照表

術語 / 縮寫簡單解釋
Bit (b)位元 / 位。電腦世界最小的單位,只能是 0 或者 1。
Byte (B)位元組。8 個 Bit 捆在一起就是一個 Byte。
Character Set字元集。像是「字典的目錄」。
Encoding編碼。具體的「儲存規則」。
RAM記憶體 / 執行記憶體。極其快速但斷電就清空的工作台。
SSD固態硬碟。現代電腦負責永久儲存資料的倉庫。
Serial / Parallel串列 / 並列。串列是一條通道挨個排隊飛奔;並列是多條通道齊頭並進。
Checksum校驗和。傳輸資料時附帶的驗證碼。
TCP傳輸控制協定。網際網路的基石協定。

總結

電腦的本質其實非常樸素:

它不過是一個擅長把所有的光影文字「轉換(編碼)」、放在某個矽片裡「保管(儲存)」、然後再把它切碎成電平脈衝「郵寄出去(傳輸)」的機器

讀懂了這個循環往復的過程,你就真正握住了推開電腦底層原理大門的那把鑰匙。