Python新手在这里。
我在 Windows7 上使用 python2.7.2。
我已经安装了 PyWin32 扩展(build 217)。
我已经安装了 adopdbapic:\Python27\Lib\site-packages\adodbapi
我有一个非常简单的模块,可以查询 MS SQL Server 中的 AdventureWorks2008LT 数据库。
import adodbapi
connStr='Provider=SQLOLEDB.1;' \
'Integrated Security=SSPI;' \
'Persist Security Info=False;' \
'Initial Catalog=AVWKS2008LT;' \
'Data Source=.\\SQLEXPRESS'
conn = adodbapi.connect(connStr)
tablename = "[salesLT].[Customer]"
# create a cursor
cur = conn.cursor()
# extract all the data
sql = "select * from %s" % tablename
cur.execute(sql)
# show the result
result = cur.fetchall()
for item in result:
print item
# close the cursor and connection
cur.close()
conn.close()
AdventureWorks2008LT 示例数据库具有客户、产品、地址和订单表(等)。这些表中的一些字符串数据是 unicode。
该查询适用于前几行。我看到了预期的输出。但是,脚本失败并显示以下消息:
Traceback (most recent call last):
File "C:\dev\python\query-1.py", line 24, in <module>
print item
File "C:\Python27\lib\site-packages\adodbapi\adodbapi.py", line 651, in __str__
return str(tuple([str(self._getValue(i)) for i in range(len(self.rows.converters))]))
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 19: ordinal not in range(128)
...这非常没有帮助。对我来说。
我收集到 adodbapi 正在尝试将 u'\xe9' 字符编码为 ASCII。我明白为什么会失败。我想它正试图将其作为print
声明的一部分。
为什么要尝试将字符编码为 ASCII?
我怎么能告诉它只使用 UTF-8?
ps:我在 Windows 的 cmd.exe 提示符下运行脚本。这是否意味着标准输出总是 ASCII?
例如,\python27\python.exe -c "import sys; print(sys.stdout.encoding)"
给我'cp437'