Base62 編碼解碼

將文字、十六進位位元組或檔案轉換為 Base62,也可以反向解碼。輸出只包含數字和字母,無需轉義即可用於 URL、檔名和各類識別符號。

完全在瀏覽器中執行,不會上傳任何資料。

使用方法

  1. 選擇「編碼」把文字轉換為 Base62,或選擇「解碼」把 Base62 還原為文字。
  2. 選擇與目標系統一致的字母表順序:0-9 A-Z a-z(預設)或 0-9 a-z A-Z。
  3. 輸入或貼上內容,也可以開啟較小的檔案(約 20 KB 以內)。
  4. 複製結果,或將結果下載為檔案。

什麼是 Base62?

Base62 使用 10 個數字、26 個大寫字母和 26 個小寫字母,是隻由字母和數字組成的最大字母表,因此結果在 URL、檔名、資料庫鍵和程式碼識別符號中都無需轉義。每個字元約承載 5.95 位,輸出約為輸入的 1.34 倍,幾乎和 Base64 一樣緊湊,卻不含 +、/、=、- 或 _。

由於 62 不是 2 的冪,本工具與 Base58、Base36 一樣,把整個輸入當作一個大整數轉換為 62 進位。每個前導零位元組寫成一個 0,以便在往返轉換中保留下來。資料越大運算越慢,因此輸入限制在約 20 KB 以內。

Base62 沒有統一標準

與 Base64 不同,Base62 沒有 RFC 標準,各種實現在以下方面存在差異,結果往往互不相容:

  • 字母表順序。本工具提供 0-9A-Za-z(預設)和 0-9a-zA-Z 兩種,另一些庫則把字母放在數字前面。
  • 前導零。有的實現像本工具一樣為每個前導零位元組保留一個 0,有的直接丟棄,固定長度的格式則會補齊到指定寬度。
  • 編碼物件。很多 Base62 函式編碼的是整數(例如資料庫 ID),而不是位元組序列;還有的把資料切成固定大小的塊分別編碼。

如果來自其他系統的字串在這裡解碼出亂碼,可以換用另一種字母表;仍然不行的話,說明對方很可能使用了不同的方法。

Base62 的常見用途

短連結服務把自增 ID 轉換為短程式碼,7 個 Base62 字元就能表示超過 3.5 萬億個值。KSUID 等可排序 ID 採用固定 27 個字元的 Base62 形式;許多服務也用 Base62 生成 API 金鑰和權杖,因為雙擊就能選中整個字串,貼上到哪裡都不會出問題。若要轉換單個整數,可以使用進位轉換器,或者寫幾行程式碼:

// JavaScript:把整數(BigInt)轉換為 Base62
const A = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
function toBase62(n) {
  let s = '';
  do { s = A[Number(n % 62n)] + s; n /= 62n; } while (n > 0n);
  return s;
}
toBase62(123456789n);   // '8M0kX'

編碼規格

字母表0-9 A-Z a-z
輸出體積約 134%(大數進位轉換)
填充無
標準無正式標準
區分大小寫是

編碼範例

輸入 (UTF-8)輸出
Hello, World!1wJfrzvdbtXUOlUjUf
Base64.isNWxjrFq4r3rv
你好19PqtKE1t

常見問題

Base62 是 URL 安全的嗎?
是的。它只使用 A-Z、a-z 和 0-9,在 URL 中永遠不需要轉義。Base64URL 也是 URL 安全的,但包含 - 和 _ 兩個字元。
為什麼 Base62 字串解碼後文字不對?

不同的 Base62 實現在字母表順序和編碼方法上各不相同。請在 0-9A-Za-z 和 0-9a-zA-Z 兩種字母表之間切換試試;如果都不對,這個字串很可能是由整數生成的,或使用了其他演算法。

Base62 區分大小寫嗎?

區分。大寫和小寫字母代表不同的值,所以絕不能把 Base62 字串統一轉換為大寫或小寫。

該選 Base62 還是 Base58?
Base58 去掉了 0、O、I 和 l,避免人工抄寫時混淆;Base62 保留全部字母和數字,長度略短。需要人工輸入的字串選 Base58,主要由程式處理的字串選 Base62。