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

时间:2019-05-18 16:58:47

标签: dart flutter base64 base64url

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

"username:password"

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

1 个答案:

答案 0 :(得分:1)

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

您需要进行以下导入:

import 'dart:convert';

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

请注意,这等效于:

String encoded = base64.encode(utf8.encode(credentials)); // dXNlcm5hbWU6cGFzc3dvcmQ=
String decoded = utf8.decode(base64.decode(encoded));     // username:password

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

再次,这等效于:

String encoded = base64Url.encode(utf8.encode(credentials)); // dXNlcm5hbWU6cGFzc3dvcmQ=
String decoded = utf8.decode(base64Url.decode(encoded));     // username:password

另请参见