Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pyodbc返回由拉丁语替换的unicode符号_Python_Unicode_Odbc - Fatal编程技术网

Python pyodbc返回由拉丁语替换的unicode符号

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没有

当使用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”