我正在解析一个csv文件(在windows中创建)并尝试使用我创建的模型填充数据库表。
我收到此错误:
pl = PriceList.objects.create(code=row[0], description=row[1],.........
Incorrect string value: '\xD0h:NAT...' for column 'description' at row 1
我的表和说明字段使用utf-8和utf8_general_ci排序规则。 我想插入的实际值是这个。
HOUSING:PS-187:1g\xd0h:NATURAL CO
我不知道我应该做的任何字符串处理来克服这个错误。 我想我之前使用一个简单的python脚本来使用conn.escape_string()填充数据库并且它有效(如果有帮助)
由于
答案 0 :(得分:0)
我之前也遇到过CSV阅读器和unicode问题。在我的情况下使用以下让我过去的错误。
来自http://docs.python.org/library/csv.html
csv模块不直接支持读写Unicode, ...
下面的unicode_csv_reader()是一个 包装csv.reader的生成器 处理Unicode CSV数据(列表 Unicode字符串)。 utf_8_encoder()是一个 编码Unicode的生成器 字符串为UTF-8,一个字符串(或行) 一次。编码的字符串是 由CSV阅读器解析,和 unicode_csv_reader()解码 UTF-8编码的单元格返回Unicode:
import csv
def unicode_csv_reader(unicode_csv_data, dialect=csv.excel, **kwargs):
# csv.py doesn't do Unicode; encode temporarily as UTF-8:
csv_reader = csv.reader(utf_8_encoder(unicode_csv_data),
dialect=dialect, **kwargs)
for row in csv_reader:
# decode UTF-8 back to Unicode, cell by cell:
yield [unicode(cell, 'utf-8') for cell in row]
def utf_8_encoder(unicode_csv_data):
for line in unicode_csv_data:
yield line.encode('utf-8')