使用方法
- 選擇「編碼」把文字轉換為 Base62,或選擇「解碼」把 Base62 還原為文字。
- 選擇與目標系統一致的字母表順序:0-9 A-Z a-z(預設)或 0-9 a-z A-Z。
- 輸入或貼上內容,也可以開啟較小的檔案(約 20 KB 以內)。
- 複製結果,或將結果下載為檔案。
什麼是 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.is | NWxjrFq4r3rv |
你好 | 19PqtKE1t |
常見問題
Base62 是 URL 安全的嗎?
為什麼 Base62 字串解碼後文字不對?
不同的 Base62 實現在字母表順序和編碼方法上各不相同。請在 0-9A-Za-z 和 0-9a-zA-Z 兩種字母表之間切換試試;如果都不對,這個字串很可能是由整數生成的,或使用了其他演算法。
Base62 區分大小寫嗎?
區分。大寫和小寫字母代表不同的值,所以絕不能把 Base62 字串統一轉換為大寫或小寫。