使用 pyodbc 和 sql server 2005 从数据库中获取结果时出现 ASCII 错误
ASCII error when fetching results from database with pyodbc and sql server 2005
从数据库中获取结果时出现此错误。
UnicodeEncodeError: 'ascii' codec can't encode character u'\xf1' in position 3: ordinal not in range(128)
仔细检查后,我发现有几条记录中有ñ和Ñ。而且我不能只是替换它们或忽略它们,因为我的数据库是个人信息的记录并且无法更改。我已经阅读了很多与此相关的链接,其中大部分都说我必须更换或删除它们。我也尝试过使用什么 in here but it's not applicable when database is involve. Also, I tried this one, and this 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')
这将使您更接近您的解决方案。
从数据库中获取结果时出现此错误。
UnicodeEncodeError: 'ascii' codec can't encode character u'\xf1' in position 3: ordinal not in range(128)
仔细检查后,我发现有几条记录中有ñ和Ñ。而且我不能只是替换它们或忽略它们,因为我的数据库是个人信息的记录并且无法更改。我已经阅读了很多与此相关的链接,其中大部分都说我必须更换或删除它们。我也尝试过使用什么 in here but it's not applicable when database is involve. Also, I tried this one, and this 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')
这将使您更接近您的解决方案。