error :: UnicodeDecodeError

时间:2010-03-17 12:31:24

标签: python

我正在

UnicodeDecodeError: 'ascii' codec can't decode byte 0xb0 in position 104: ordinal not in range(128)

我正在使用intgerepropartystringpropartydatetimeproparty

4 个答案:

答案 0 :(得分:1)

那是因为0xb0(十进制176)不是ASCII中的有效字符代码(仅定义0到127之间的值)。

检查你从哪里获得该字符串并使用正确的编码。

如果您需要进一步的帮助,请发布代码。

答案 1 :(得分:1)

您正在尝试将Unicode数据(可能带有重音的文本)放入ASCII字符串中。

您可以使用Python的编解码器模块打开带有UTF-8编码的文本文件,并将Unicode数据写入其中。

.encode方法也可以提供帮助(例如u"õ".encode('utf-8')

答案 2 :(得分:0)

Python默认为ASCII编码 - 如果您要处理ASCII范围之外的字符,则需要在代码中指定。

执行此操作的一种方法是在代码顶部设置定义编码。

此代码段将文件顶部的编码设置为Latin-1(包括0xb0)的编码:

#!/usr/bin/python
# -*- coding: latin-1 -*-
import os, sys
...

See PEP for more info on encoding.

答案 3 :(得分:0)

当我编写外语“flashcard”程序时,我总是使用python 3.x,因为它的本机编码是utf-8。你编码问题通常会少得多。

但是,如果您正在处理许多人将共享的程序,您可能需要考虑将encodedecode与python 2.x一起使用,但仅限于存储和检索数据元素时在持久存储中。 encode非ASCII字符,默默操作内存中那些unicode字符串的十六进制表示,并将它们保存为十六进制。最后,在从持久存储中获取unicode字符串时使用decode,但仅限最终用户显示。这样就无需在程序中不断encodedecode字符串。

@jcoon对这个问题也有非常标准的回应。