Python API在python 3中读取.p12键

时间:2015-03-26 15:25:26

标签: python encoding google-api google-api-python-client

我试图将一些代码从Python 2移植到3,但是当它读取Google API .p12服务密钥时它会抛出UnicodeDecodeError

with open('service_key.p12', 'r') as f:
    private_key = f.read()

这是错误

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x82 in position 1: invalid start byte

此代码在python 2.7中运行良好,它与python 3.4打破 我也安装了pyOpenSSL==0.14

1 个答案:

答案 0 :(得分:4)

在python 3中,您还必须使用'b'标志来打开二进制文件:

with open('service_key.p12', 'rb') as f:
    private_key = f.read()

here所述,二进制I / O不会进行字符编码/解码。你得到了UnicodeDecodeError,因为你使用了Text I / O,它尝试将数据解码为UTF-8,但你的数据不是UTF-8。