python 个版本之间的不同 base64 编码
Different base64 encoding between python versions
我在通过 JSON 发送 html 代码时遇到问题。
我注意到我的字符串值在 python 版本(2.7 和 3.5)之间不同
我的字符串是这样的:<html><p>PAÇOCA</p></html>
上 Python 2.7:
x = '<html><p>PAÇOCA</p></html>'
base64.b64encode(x)
=> PGh0bWw+PHA+UEGAT0NBPC9wPjwvaHRtbD4=
上 Python 3.5:
x = '<html><p>PAÇOCA</p></html>'
base64.b64encode(x)
=> b'PGh0bWw+PHA+UEHDh09DQTwvcD48L2h0bWw+'
为什么这些值不同?
如何使 3.5 字符串等于 2.7?
由于口音丢失,这导致我无法接收电子邮件。
您的示例 x
值无效 Python 因此很难判断代码哪里出错了,但答案是使用 Unicode 字符串并对它们进行显式编码以获得一致的答案。下面的代码在 Python 2 和 3 中给出了相同的答案,尽管 Python 3 在打印时用 b''
装饰字节字符串。以通过 #coding
声明的编码保存源文件。源代码编码可以是支持源文件中使用的字符的任何编码。通常 UTF-8 用于非 ASCII 源代码,但我故意将其不同以表明它无关紧要。
#coding:cp1252
from __future__ import print_function
import base64
x = u'<html><p>PAÇOCA</p></html>'.encode('utf8')
enc = base64.b64encode(x)
print(enc)
使用 Pylauncher 选择主 Python 版本的输出:
C:\>py -2 test.py
PGh0bWw+PHA+UEHDh09DQTwvcD48L2h0bWw+
C:\>py -3 test.py
b'PGh0bWw+PHA+UEHDh09DQTwvcD48L2h0bWw+'
我在通过 JSON 发送 html 代码时遇到问题。
我注意到我的字符串值在 python 版本(2.7 和 3.5)之间不同
我的字符串是这样的:<html><p>PAÇOCA</p></html>
上 Python 2.7:
x = '<html><p>PAÇOCA</p></html>'
base64.b64encode(x)
=> PGh0bWw+PHA+UEGAT0NBPC9wPjwvaHRtbD4=
上 Python 3.5:
x = '<html><p>PAÇOCA</p></html>'
base64.b64encode(x)
=> b'PGh0bWw+PHA+UEHDh09DQTwvcD48L2h0bWw+'
为什么这些值不同? 如何使 3.5 字符串等于 2.7?
由于口音丢失,这导致我无法接收电子邮件。
您的示例 x
值无效 Python 因此很难判断代码哪里出错了,但答案是使用 Unicode 字符串并对它们进行显式编码以获得一致的答案。下面的代码在 Python 2 和 3 中给出了相同的答案,尽管 Python 3 在打印时用 b''
装饰字节字符串。以通过 #coding
声明的编码保存源文件。源代码编码可以是支持源文件中使用的字符的任何编码。通常 UTF-8 用于非 ASCII 源代码,但我故意将其不同以表明它无关紧要。
#coding:cp1252
from __future__ import print_function
import base64
x = u'<html><p>PAÇOCA</p></html>'.encode('utf8')
enc = base64.b64encode(x)
print(enc)
使用 Pylauncher 选择主 Python 版本的输出:
C:\>py -2 test.py PGh0bWw+PHA+UEHDh09DQTwvcD48L2h0bWw+ C:\>py -3 test.py b'PGh0bWw+PHA+UEHDh09DQTwvcD48L2h0bWw+'