我正在
UnicodeDecodeError: 'ascii' codec can't decode byte 0xb0 in position 104: ordinal not in range(128)
我正在使用intgereproparty
,stringproparty
,datetimeproparty
答案 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
...
答案 3 :(得分:0)
当我编写外语“flashcard”程序时,我总是使用python 3.x,因为它的本机编码是utf-8。你编码问题通常会少得多。
但是,如果您正在处理许多人将共享的程序,您可能需要考虑将encode
和decode
与python 2.x一起使用,但仅限于存储和检索数据元素时在持久存储中。 encode
非ASCII字符,默默操作内存中那些unicode字符串的十六进制表示,并将它们保存为十六进制。最后,在从持久存储中获取unicode字符串时使用decode
,但仅限最终用户显示。这样就无需在程序中不断encode
和decode
字符串。
@jcoon对这个问题也有非常标准的回应。