JavaScript Base64 UTF8 文字編碼、解碼

Base64 編碼方式,可以將任意二進制數據轉換為純文本格式,使用在網路上傳輸。UTF-8 為 Unicode 的實現方式,線上直接編碼、解碼可以將 Unicode 字符集中的字符編碼成字節序列。

Base64 解碼器、編碼器 🔨

EnCoding 編碼DeCoding 解碼

常用的 Base64 編碼可描述為不易被直接識別的形式,但於網路資料在計算機中傳遞之間對字元採用 MIME 數據傳輸編碼進行編碼,可以避免遇到些符號或中文的文字可能亂碼問題或是過濾些影響資料庫的符號衝突狀況,也是符合網路傳輸標準。

var encode = encodeURIComponent("編碼"); // %E7%B7%A8%E7%A2%BC

缺點就是編碼後字串佔用的空間比原始檔案大了些。使用 encodeURIComponentdecodeURIComponent 將中文字串做編碼處理,ASCII 無法表示中文,所以先以 UTF-8 十六進位編碼,再做 Base64 編碼而接受端 Server 的解碼可能不是 JavaScript 需要再依程式語言處理轉換成 ANSI 編碼的原本字符串。

EnCoding 編碼

var txtSource = "JavaScript Base64";
var enResult = window.btoa(unescape(encodeURIComponent(txtSource)));
console.log(enResult); // 返回 SmF2YVNjcmlwdCBCYXNlNjQ=

DeCoding 解碼

var txtSource = "SmF2YVNjcmlwdCBCYXNlNjQ=";
var deResult = decodeURIComponent(escape(window.atob(txtSource)));
console.log(deResult); // 返回 JavaScript Base64


ASPX 開發者數據傳輸編碼 .NET API 的對應

EnCoding 編碼

Convert.ToBase64String 轉換為使用 Base-64 位數編碼的相等字串表示。文字串處理轉換成 Base64 編碼。將指定字串中的所有字元編碼成位元組序列,通過 Encoding.UTF8.GetBytes 可以取得 2 進位的編碼,再將此 2 進位對應 Base64 索引編碼就可以換成為 Base64 字串。

Dim enResult = Convert.ToBase64String(Encoding.UTF8.GetBytes("JavaScript Base64"))

Base64 編碼可用於在 HTTP 環境下傳遞,Base64 是二進位制到文字的編碼,它將 Bytes 位元組編碼為文字。


DeCoding 解碼

Convert.FromBase64String 的方法來還原原始的 Base64 編碼。

Dim deResult = Encoding.UTF8.GetString(Convert.FromBase64String("SmF2YVNjcmlwdCBCYXNlNjQ="))

使用 Convert.FromBase64String() 方法可以將 Base-64 字串變數轉換回為位元組陣列。將 Base-64 編碼的字串轉換為標準字串變數,需要使用 Encoding.UTF8.GetString() 方法將 Convert.FromBase64String() 方法返回的 Bytes 位元組陣列轉換為 String 字串變數。

當出現無效的 System.FormatException: Base-64 字元陣列或字串的無效長度錯誤,可能在 URL 編碼 Base64 字符串 .Net Framework 通過將 + 符號 Replace 轉換為空格來產生問題。因此在用 + 號替換空格後可以減少些問題。或是字符串不是 4 的倍數。它需要使用 = 字符填充為 4 的倍數。

在使用 Class ASP 時為了 Base-64 編碼、解碼還得寫一大串的程式碼來解決。配合 JavaScript Fetch API 資源的接口 System.Web.Script.Serialization JavaScriptSerializer 將 JSON 格式化字串轉換成指定之類型的物件、序列化物件並將產生的 JSON 字串,會是 .NET 開發者需要的。