3

当使用 Python 和 pyodbc 连接到 Transbase 源时(连接字符串是正确的并且可以在其他应用程序中使用),我看到 ó、ű、é、á 等符号转换为 o、u、e、a。

但是,如果我通过 ODBC 从 MS Access 连接到同一源,这些符号将正确显示。如果我从 pyodbc 连接到 MS Access(与 mdb 文件中的 Transbase 源链接),则符号显示正确。

Provider=Microsoft.Jet.OLEDB.4.0;数据源=c:\1.mdb;Persist Security Info=False

CHARSET=uft8 没有帮助

如何更改连接字符串或其他参数以正确显示这些符号?

4

1 回答 1

1

您的问题中有一些变量使一个好的答案变得困难。了解您正在查询的数据库使用什么字符编码很重要。看来您的替换字符无法用等效的拉丁字符找到。

以与数据库相同的编码或具有 ó、ű、é、á 对应字符的编码对查询的返回进行编码将是一个开始。所以:

query_result = cursor.execute(sql)
data = query_result[0].encode('utf8',errors='strict')

如果在您选择的编码中找不到字符(上例中为 utf8),errors='strict' 将导致错误。这可以帮助您找到正确的数据库编码。

从你得到的结果来看,你现在拥有的代码相当于:

data = query_result[0].encode('utf8',errors='replace')

它将用“合适的”替代品替换它找不到的字符。所以ó被替换为“0”

于 2013-12-20T15:08:06.237 回答