如何在Flutter / Dart中编码和解码Base64和Base64Url

Sur*_*gch 0 base64 dart flutter base64url

我想在Flutter中的Base64Url中编码以下字符串,然后在Dart服务器上对其进行解码。

"username:password"
Run Code Online (Sandbox Code Playgroud)

我怎么做?以及如何在Base64中做到这一点?

Sur*_*gch 5

dart:convert库包含用于Base64和Base64Url的编码器和解码器。但是,它们对整数列表进行编码和解码,因此对于字符串,还需要使用UTF-8进行编码和解码。您可以将它们与合并,而不必分别进行这两种编码fuse

您需要进行以下导入:

import 'dart:convert';
Run Code Online (Sandbox Code Playgroud)

Base64

String credentials = "username:password";
Codec<String, String> stringToBase64 = utf8.fuse(base64);
String encoded = stringToBase64.encode(credentials);      // dXNlcm5hbWU6cGFzc3dvcmQ=
String decoded = stringToBase64.decode(encoded);          // username:password
Run Code Online (Sandbox Code Playgroud)

请注意,这等效于:

String encoded = base64.encode(utf8.encode(credentials)); // dXNlcm5hbWU6cGFzc3dvcmQ=
String decoded = utf8.decode(base64.decode(encoded));     // username:password
Run Code Online (Sandbox Code Playgroud)

Base64Url

String credentials = "username:password";
Codec<String, String> stringToBase64Url = utf8.fuse(base64Url);
String encoded = stringToBase64Url.encode(credentials);      // dXNlcm5hbWU6cGFzc3dvcmQ=
String decoded = stringToBase64Url.decode(encoded);          // username:password
Run Code Online (Sandbox Code Playgroud)

同样,这等效于:

String encoded = base64Url.encode(utf8.encode(credentials)); // dXNlcm5hbWU6cGFzc3dvcmQ=
String decoded = utf8.decode(base64Url.decode(encoded));     // username:password
Run Code Online (Sandbox Code Playgroud)

也可以看看

  • 这是因为`fuse()`方法文档说:*“进行编码时,生成的编解码器先以`this`进行编码,然后再使用`other`进行编码。解码时,生成的编解码器将以`other`进行解码,然后再通过`this`进行解码。 “ * (2认同)

归档时间:

查看次数:

2138 次

最近记录:

6 年,6 月 前