【发布时间】:2012-03-18 16:15:32
【问题描述】:
我一直在使用 python 2.6。当我正在编写一个 python 程序来处理来自 sql server 的查询结果(以 csv 格式)时。我发现它不支持unicode。
当我使用 csv 文件运行程序时,弹出错误提示:
for row in csvReader:
Error: line contains NULL byte
我用 Ultraedit 将 csv 文件保存为 ANSI/ASCII 格式后,程序运行正常。
我尝试包含编码选项,但失败了:
csvReader = csv.reader(open(fname, mode='rb', encoding='unicode'), delimiter=',')
TypeError: 'encoding' is an invalid keyword argument for this function
csvReader = csv.reader(open(fname, mode='rb', encoding='utf-8'), delimiter=',')
TypeError: 'encoding' is an invalid keyword argument for this function
我想知道 python 3 是否支持这种 unicode 读取。它可以为我节省很多工作。
【问题讨论】:
-
为什么不直接从python访问SQL呢?
-
Python 3.1.3 的
open肯定 支持和encoding=参数,所以要么你使用不同版本的 Python,要么你不小心覆盖了 @987654325 @函数。 -
我说我用的是python 2.6。那么Python 3.1.3就不会有这个问题了?
-
Python 3 仍然有这个问题。显然有一个 NUL 字节搞砸了 python,无论是 python 3 还是 python 2。
-
哦,抱歉,不清楚您使用的是 Python 2.6。请参阅我的更新答案。