我希望在Flutter中使用Base64Url对以下字符串进行编码,并在Dart服务器上解码它。
"username:password"
我该怎么做?并且我应该如何使用Base64进行操作?
我希望在Flutter中使用Base64Url对以下字符串进行编码,并在Dart服务器上解码它。
"username:password"
我该怎么做?并且我应该如何使用Base64进行操作?
dart:convert
库包含了Base64和Base64Url的编解码器。然而,它们只能对整数列表进行编解码,因此对于字符串,您还需要使用UTF-8进行编解码。您可以使用fuse
将这两个编码器组合在一起,而不是分别进行两次编码。
您需要使用以下导入语句:
```dart import 'dart:convert'; ```import 'dart:convert';
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
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
Codec::fuse()
方法代替utf8.decode(base64.decode(credentials));
这样的结构。 - pskinkutf8
和base64
的顺序。您只需在融合方法上使用decode
即可。所以,是的,简单得多了。 - Suragchfuse()
方法的文档中写道:“在编码时,生成的编解码器先使用this
进行编码,然后再使用other
进行编码。在解码时,生成的编解码器先使用other
进行解码,然后再使用this
进行解码。” - pskinkBase64Encoder().convert(credentials.codeUnits)
,你还可以使用Base64Encoder.urlSafe()
。你对此有什么想法?在我看来,这种方式更易读。 - Suragch