python - 使用 pyodbc 和 sql server 2005 从数据库获取结果时出现 ASCII 错误

标签 python sql-server-2005

从数据库获取结果时出现此错误。

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/

相关文章:

visual-studio - ReportViewer 控件版本冲突

python - 将函数应用于数据帧以创建列表的矢量化方式

sql - SQL Server 2005 中的内置数据库角色允许执行存储过程吗?

python - scikit-learn 线性回归索引误差

python - 对值进行排序并查找最佳分数(最高数字)

asp.net - 如何为 .NET 开发创建我的第一个数据库?

sql - 如何在 ALTER TABLE 后正确运行 ALTER VIEW

sql - 当我想使用数据库约束但只标记为已删除而不是删除时该怎么办?

python - 无法删除 pandas DataFrame 中的部分字符串

python - 使用用户程序员指南时遇到问题