搞懂編碼(Encode):資料轉換的基本功

Published December 11, 2025 by 徐培鈞
基礎概念

上一篇我們聊了雜湊(Hash),知道它是「單向」的,資料進去就回不來了。

這篇要來聊的是編碼(Encode),它跟雜湊最大的不同就是:編碼是雙向的,可以過去,也可以回來。

在做權限驗證的時候,編碼也是一個很常出現的觀念。如果你搞不清楚編碼跟雜湊的差別,後面在看 Token、JWT 這些東西的時候,很容易會搞混。

這篇文章一樣用最白話的方式,讓你搞懂編碼到底是什麼。

編碼是什麼?

用語言翻譯來理解

編碼的概念,可以用「語言翻譯」來理解。

想像一下:

  • 英文可以翻譯成日文
  • 日文可以翻譯成中文
  • 中文也可以翻譯回英文

這種可以互相轉換的過程,就是編碼的概念。

實際上怎麼運作?

你有一份資料,透過某種編碼方式(Encode),把它轉換成另一種格式。

原始資料 ──→ Encode(編碼) ──→ 編碼後的資料
編碼後的資料 ──→ Decode(解碼) ──→ 原始資料

重點是:它可以過去,也可以回來。這就是編碼跟雜湊最大的差別。

為什麼需要編碼?

不同情況需要不同的呈現方式

有時候,同樣一份資料,在不同的地方需要用不同的方式來呈現或儲存。

舉個例子:

  • 在瀏覽器上,你想要顯示一張圖片
  • 但在資料庫裡,你可能想要用文字的方式來儲存這張圖

這種時候,就需要用到編碼。

常見的應用場景

  • 把圖片轉成文字儲存
  • 在網址中傳遞特殊字元
  • 在不同系統之間傳遞資料

常見的編碼方式

Base64 編碼

Base64 是最常見的編碼方式之一。

它能做什麼?

不管你的檔案是什麼格式,透過 Base64 編碼之後,都會變成一串由以下字元組成的字串:

  • 大寫英文:A-Z(26 個)
  • 小寫英文:a-z(26 個)
  • 數字:0-9(10 個)
  • 符號:+=(2 個)

加起來總共 64 個字元,所以叫做 Base64。

實際範例

假設你有一張大頭貼,透過 Base64 編碼之後,它會變成像這樣的一串文字:

SGVsbG8gV29ybGQhIQ==

怎麼認出 Base64?

一個小技巧:如果你看到一串文字,結尾有 ===,很大的機會就是 Base64 編碼的內容。

常見用途

Base64 很常用在小型圖片的處理,像是大頭貼。

為什麼?因為大頭貼通常很小張,如果每次都要另外載入一張圖片檔,會比較慢。但如果把它轉成 Base64 的文字,就可以直接嵌在網頁裡面,載入速度會更快。

Hex 編碼(16 進位編碼)

另一種常見的編碼方式是 Hex 編碼,中文叫做「16 進位編碼」。

它能做什麼?

Hex 編碼會把資料轉換成由以下字元組成的字串:

  • 數字:0-9(10 個)
  • 英文:A-F(6 個)

加起來總共 16 個字元,所以叫做 16 進位。

實際範例

同樣一張圖片,透過 Hex 編碼之後,會變成像這樣:

48656C6C6F20576F726C6421

Base64 vs Hex:該用哪一個?

主要差別:長度

同樣一份資料:

  • Hex 編碼:會變成比較長的字串
  • Base64 編碼:會變成比較短的字串

這是因為 Base64 可以用的字元比較多(64 個 vs 16 個),所以「壓縮率」比較高。

一般情況下

大部分情況會使用 Base64,因為產生的字串比較短,傳輸和儲存都比較有效率。

重點整理

來複習一下這篇講的重點:

  1. 編碼是雙向的,可以 Encode 過去,也可以 Decode 回來
  2. 編碼的目的是在不同情況下用不同方式呈現資料
  3. Base64 是最常見的編碼方式,結尾常常有 ===
  4. Hex(16 進位) 也是常見的編碼方式,但字串會比較長
  5. 編碼不是加密,任何人都可以輕易解碼回來

編碼 vs 雜湊

最後再強調一次兩者的差別:

雜湊(Hash)單向,回不去
編碼(Encode)雙向,可以回來
雜湊(Hash)驗證、保護資料
編碼(Encode)轉換格式
雜湊(Hash)有一定保護作用
編碼(Encode)沒有保護作用

記住:編碼不是拿來保護資料的,任何人只要知道你用什麼編碼方式,就可以輕鬆解碼回來。

最後

搞懂編碼之後,你就已經了解「雜湊」和「編碼」這兩個觀念了。

下一篇我們會聊到「加密(Encrypt)」,這三個東西很容易搞混,但它們是完全不同的概念。

把這三個都搞懂,後面在做權限驗證的時候就會清楚很多!