递归 python 客户端在提供非 ascii 字符时引发 UnicodeDecodeError
Recurly python client raising UnicodeDecodeError when supplying non-ascii characters
我正在尝试使用 Python 客户端从 API 的 Recurly 创建帐户。
Python 2.7,递归 2.2.17
使用包含非 ascii 字符(作为 unicode
获取)的名字(或任何其他属性)创建新帐户时,保存实体会引发 UnicodeDecodeError: 'ascii' codec can't decode byte [...]
一个简单的 account.first_name = u'Frédérique-Fançois'.encode('utf-8')
仍然会引发相同的错误,但在模块的另一个级别。
recurly.API_KEY
和 recurly.SUBDOMAIN
必须传递 str
objects.
如果您使用 unicode_literals
或者您的配置源提供 unicode
值,您可能会遇到麻烦。在这种情况下,如果值不包含 non-ascii 个字符,则需要通过 str
或 encode()
.
来转换它们
例如
from __future__ import unicode_literals
# You can force it like this
account.API_KEY = str('my api key here')
account.SUBDOMAIN = str('advanseez')
这样做可以确保底层 httplib
不会将 HTTP headers 转换为 unicode
从而与任何 non-ascii 字符冲突,从而显示消息 body使用 Recurly 客户端时总是 str
。
这样您就可以使用 unicode
.
在任何 Recurly 资源中安全地分配属性
例如
account = recurly.Account(account_code='12345689', first_name=u'Frédérique-François')
account.save() # Works without raising UnicodeDecodeError
有关问题的详细演示、解决方法和问题根源的解释,请参阅(注意 import unicode_literals
的使用,它将默认字符串类型更改为 Unicode):https://gist.github.com/maximehardy/d3a0a6427d2b6791b3dc
我正在尝试使用 Python 客户端从 API 的 Recurly 创建帐户。 Python 2.7,递归 2.2.17
使用包含非 ascii 字符(作为 unicode
获取)的名字(或任何其他属性)创建新帐户时,保存实体会引发 UnicodeDecodeError: 'ascii' codec can't decode byte [...]
一个简单的 account.first_name = u'Frédérique-Fançois'.encode('utf-8')
仍然会引发相同的错误,但在模块的另一个级别。
recurly.API_KEY
和 recurly.SUBDOMAIN
必须传递 str
objects.
如果您使用 unicode_literals
或者您的配置源提供 unicode
值,您可能会遇到麻烦。在这种情况下,如果值不包含 non-ascii 个字符,则需要通过 str
或 encode()
.
例如
from __future__ import unicode_literals
# You can force it like this
account.API_KEY = str('my api key here')
account.SUBDOMAIN = str('advanseez')
这样做可以确保底层 httplib
不会将 HTTP headers 转换为 unicode
从而与任何 non-ascii 字符冲突,从而显示消息 body使用 Recurly 客户端时总是 str
。
这样您就可以使用 unicode
.
例如
account = recurly.Account(account_code='12345689', first_name=u'Frédérique-François')
account.save() # Works without raising UnicodeDecodeError
有关问题的详细演示、解决方法和问题根源的解释,请参阅(注意 import unicode_literals
的使用,它将默认字符串类型更改为 Unicode):https://gist.github.com/maximehardy/d3a0a6427d2b6791b3dc