UnicodeDecodeError: 'ascii' codec can't decode byte 0xb0 in position 104: ordinal not in range(128)
我使用intgereproparty
,stringproparty
,datetimeproparty
UnicodeDecodeError: 'ascii' codec can't decode byte 0xb0 in position 104: ordinal not in range(128)
我使用intgereproparty
,stringproparty
,datetimeproparty
这是因为0xb0
(十进制176)是不是在ASCII有效的字符代码(这间仅定义值0和127)。
检查你从哪里得到该字符串,并使用正确的编码。
如果您需要更多帮助,请发布代码。
您试图将Unicode数据(可能带有重音的文本)放入ASCII字符串中。
您可以使用Python的编解码器模块打开一个UTF-8编码的文本文件,并将Unicode数据写入它。
的.encode
方法还可以帮助(u"õ".encode('utf-8')
例如)
的Python默认为ASCII编码 - 如果你正在处理的ASCII范围之外的字符,你需要指定在你的代码。
这样做的一种方法是在代码顶部设置编码定义。
这个片段设置编码在文件的顶部编码拉美-1(其中包括0xb0
):
#!/usr/bin/python
# -*- coding: latin-1 -*-
import os, sys
...
当我写我的外语“闪卡”的方案,我总是使用python 3.x作为它的本地编码是utf-8。编码问题通常会少得多。
如果你的程序,很多人将分享工作,但是,你可能要考虑使用encode
和decode
与Python 2.x中,但只有存储和检索的持久性存储的数据元素时。 encode
您的非ASCII字符,以静默方式处理内存中这些unicode字符串的十六进制表示形式,并将它们保存为十六进制。最后,从持久存储中获取unicode字符串时使用decode
,但仅限最终用户显示。这将消除你的程序中不断需要你的字符串encode
和decode
。
@jcoon对这个问题也有相当标准的回应。