当我使用Python生成base64将在其中使用的字符串时raw key { 'raw': value } GMAIL API,发送电子邮件就完美了.
但是当我使用Dart生成相同的base64字符串时,字符串与python不同,因此我无法发送电子邮件,因为GMAIL API告诉我message: Invalid value for ByteString
将转换为base64的字符串是:
var message = '''<html><meta http-equiv="content-type" content="text/html; charset=utf-8"/><head></head><body>Test</body></html>'''
Run Code Online (Sandbox Code Playgroud)
Python代码:
import base64
e = base64.urlsafe_b64encode('''<html><meta http-equiv="content-type" content="text/html; charset=utf-8"/><head></head><body>Test</body></html>''')
print(e)
Run Code Online (Sandbox Code Playgroud)
结果:
PGh0bWw-PG1ldGEgaHR0cC1lcXVpdj0iY29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiLz48aGVhZD48L2hlYWQ-PGJvZHk-VGVzdDwvYm9keT48L2h0bWw-
飞镖码:
import 'dart:convert';
var _bytes = utf8.encode('''<html><meta http-equiv="content-type" content="text/html; charset=utf-8"/><head></head><body>Test</body></html>''');
var _base64 = base64Encode(_bytes);
print(_base64);
Run Code Online (Sandbox Code Playgroud)
结果:
PGh0bWw+PG1ldGEgaHR0cC1lcXVpdj0iY29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiLz48aGVhZD48L2hlYWQ+PGJvZHk+VGVzdDwvYm9keT48L2h0bWw+
请注意,唯一的区别是+Dart的base64字符串中的-符号,以及Python的base64字符串中的符号
如何生成相同的base64 python代码,以便我可以在GMAIL API中发送电子邮件
您明确要求Python在base64编码的字符串中用 - 替换所有+字符,因为您已经使用了该urlsafe_b64encode变体!文件说:
base64.urlsafe_b64encode(S)
使用URL和文件系统安全字母表对类似字节的对象进行编码,该字母表替换 - 而不是标准Base64字母表中的+和_而不是/,并返回编码的字节.结果仍然可以包含=.
如果你想要与Dart产生相同的字符串,只需使用encodebytesPython3或encodePython 2.
Dart 有一个 URL 安全版本的 Base 64 编码,就像 Python 一样。
改变
var _base64 = base64Encode(_bytes);
到
var _base64 = base64UrlEncode(_bytes);
| 归档时间: |
|
| 查看次数: |
463 次 |
| 最近记录: |