从数据库获取结果时出现此错误。
UnicodeEncodeError:“ascii”编解码器无法对位置 3 中的字符 u'\xf1' 进行编码:序号不在范围(128)
经过仔细检查,我发现其中有几条记录中有ñ和Ñ。我不能只是替换它们或忽略它们,因为我的数据库是个人信息的记录并且无法更改。我已经阅读了许多与此相关的链接,其中大多数都说我必须替换它们或删除它们。我也尝试过使用 in here但涉及数据库时则不适用。另外,我尝试了这个one ,还有这个one但似乎没有什么可以回答我的问题。我正在格式化获取的结果,如下所示:
cursor.execute("select * from dummy")
str1=''
for row in cursor:
str1 = str1 + ''.join(map(str,row)) + "\n"
print str1
并且它输出上面的错误。 然而,当我尝试这个时:
for row in cursor:
str1 = str(row)
print str1.decode('latin-1')
它显示没有错误,但结果是:
(u'Ara\xf1as ', )
(u'Para\xf1aque ', )
(u'Ma\xf1a\xf1a ', )
(u'Di\xd1a ', )
而不是
Arañas
Parañaque
Mañaña
DiÑa
如何解决此 ascii 错误?
最佳答案
您将整行转换为字符串。 尝试这样的事情:
print row[0]
print str(row[0])
print row[0].encode('latin-1')
print row[0].encode('utf-8')
这将使您更接近您的解决方案。
关于python - 使用 pyodbc 和 sql server 2005 从数据库获取结果时出现 ASCII 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30207442/