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 开发者需要的。