Python 2.7 阅读时如何避免转换为ASCII码

Python 2.7 阅读时如何避免转换为ASCII码,python-2.7,ascii,psycopg2,pypyodbc,Python 2.7,Ascii,Psycopg2,Pypyodbc,我正在使用Python从SQL Server(PyODBC)读取值并将其插入PostgreSQL(psycopg2) 名称字段中出现导致错误的值: Montaño 该值正好存在于我的MSSQL数据库中(SQL\u拉丁1\u通用\u CP1\u CI\u作为编码),可以使用PGAdmin和insert语句将其插入到我的PostgreSQL数据库中(UTF8) 问题是使用python选择它会导致值转换为: Monta\xf1o (xf1是“带波浪号的拉丁文小写字母n”的ASCII码) …这导致

我正在使用Python从SQL Server(PyODBC)读取值并将其插入PostgreSQL(psycopg2)

名称字段中出现导致错误的值:

Montaño
该值正好存在于我的MSSQL数据库中(SQL\u拉丁1\u通用\u CP1\u CI\u作为编码),可以使用PGAdmin和insert语句将其插入到我的PostgreSQL数据库中(UTF8)

问题是使用python选择它会导致值转换为:

Monta\xf1o 
(xf1是“带波浪号的拉丁文小写字母n”的ASCII码)

…这导致在尝试插入PostgreSQL时引发以下错误:

invalid byte sequence for encoding "UTF8": 0xf1 0x6f 0x20 0x20

有没有办法避免将输入字符串转换为导致上述错误的字符串?

在Python_2下,您确实希望执行从基本字符串到unicode类型的转换。那么,如果您的代码看起来像

sql=”“”\
从dbo.latin1test中选择名称,其中ID=1
"""
mssql_crsr.execute(sql)
row=mssql_crsr.fetchone()
名称=行[0]
然后,您可能希望将基本
latin1
字符串(从SQL Server检索)转换为
unicode
类型,然后再将其用作PostgreSQL插入的参数,即,而不是

name=行[0]
你会的

name=unicode(第[0]行,'latin1')

太棒了!!!工作得很好!我将把它加入到我的制作脚本中,但这解决了目前的问题。非常感谢。