Python pyodbc返回由拉丁语替换的unicode符号
当使用Python和pyodbc连接到Transbase源代码时(连接字符串是正确的,可以在其他应用程序中使用),我看到像ó、ű、é、á这样的符号转换为o、u、e、a 但是,如果我通过ODBC从MS Access连接到同一个源,这些符号将正确显示。如果我从pyodbc连接到MS Access(与mdb文件中的Transbase源代码链接),符号将正确显示 Provider=Microsoft.Jet.OLEDB.4.0;数据源=c:\1.mdb;持久安全 信息=错误 CHARSET=uft8没有帮助Python pyodbc返回由拉丁语替换的unicode符号,python,unicode,odbc,Python,Unicode,Odbc,当使用Python和pyodbc连接到Transbase源代码时(连接字符串是正确的,可以在其他应用程序中使用),我看到像ó、ű、é、á这样的符号转换为o、u、e、a 但是,如果我通过ODBC从MS Access连接到同一个源,这些符号将正确显示。如果我从pyodbc连接到MS Access(与mdb文件中的Transbase源代码链接),符号将正确显示 Provider=Microsoft.Jet.OLEDB.4.0;数据源=c:\1.mdb;持久安全 信息=错误 CHARSET=uft8没有
如何更改连接字符串或其他参数以正确显示这些符号?您的问题中有一些变量使得很难给出好的答案。您要查询的数据库使用的字符编码很重要。似乎您正在将找不到的字符替换为等效拉丁字符 以与数据库相同的编码方式,或者以包含ó、ű、é、á的对应字符的编码方式,对查询返回进行编码将是一个开始。因此:
query_result = cursor.execute(sql)
data = query_result[0].encode('utf8',errors='strict')
errors='strict'如果在您选择的编码(上例中为utf8)中找不到字符,则会导致错误。这可能会帮助您找到数据库的正确编码
从您得到的结果来看,您现在拥有的代码相当于:
data = query_result[0].encode('utf8',errors='replace')
这将用“合适的”替代品取代它找不到的字符。Soó被替换为“0”