0
TDB = csv.reader(codecs.open('data/TDS.csv', 'rb', encoding='utf-8'), delimiter=',', quotechar='"')

ts = db.testCol

for row in TDB:
    print row[1]
    T = {"t":row[1],
             "s": row[0]}
    post_id = ts.insert(T)

我不知道为什么我不能将它编码为 utf-8 而我想将数据插入数据库中,我必须将其设为 utf8 格式。

UnicodeDecodeError: 'utf8' codec can't decode byte 0xf3 in position 36: invalid continuation byte

在我输入编码函数之前,我从 pymongo 得到了这个。

bson.errors.InvalidStringData: strings in documents must be valid UTF-8

我猜,这是它无法编码的数据

'compleja e intelectualmente retadora , el ladrÛn de orquÌdeas es uno de esos filmes que vale la pena ver precisamente por su originalidad . '

有谁知道我该怎么做?谢谢

4

1 回答 1

1

好的,这可能会有所帮助..

这里有一个编码列表:

http://docs.python.org/2/library/codecs.html#standard-encodings

latin-1是用于欧洲语言的通用编码。

处理编码的基本流程是:

  1. 读入编码内容
  2. content.decode("源编码") 到 unicode
  3. 从 unicode 编码到所需的编码,unicode_content.encode("desired encoding")

您可以尝试通过看起来正确的编码,看看哪些不会导致错误:

enc = "latin-1"
f = open("TSD.csv", "r")
content = f.read() # raw encoded content
u_content = content.decode(enc) # decodes from enc to unicode
utf8_content = u_content.encode("utf8")
于 2013-02-21T22:52:09.747 回答