【问题标题】:Why am I getting unicode values back from SQLTables?为什么我从 SQLTables 中获取 unicode 值?
【发布时间】:2012-05-24 19:05:42
【问题描述】:

我正在尝试通过 ODBC 从在 Ubuntu 上运行的 Python 程序连接到同一台机器上的 MySQL 机器。 (我使用的是 ODBC 而不是 DB-API,因为我将使用不同的数据库引擎,并且我想要一种一致的方式来获取系统目录,例如 SQLTables。)

但是当我连接到我的 MySQL 数据库并运行 SQLTables 时,我的第一行得到了这个:

(u'\U0067007a\U005f0061\U00690062\U006c006c\U006e0069\U005f0067\U00750061\U006f0074\U0061006d\U00690074\U006e006f\U0063005,f\ 你'',你'\U00750061\U00680074\U0067005f\U006f0072\U00700075', u'\U00410054\U004c0042', u'')

显然这些是 unicode 值,但它们看起来像是用于非常高的代码点,而且果然,我无法将它们编码为 ASCII。我所有的表名都应该是 ASCII。

是否有一些我遗漏或错误的设置导致了这种情况?

我的 odbc.ini 是:

[ODBC Data Sources]
mu      = MySQL

[mu]
Description = MySQL Database Test
Driver = MySQL
Server = localhost
Database = ccc2
Port = 3306

我的 odbcinst.ini 是

[MySQL]
Description = ODBC for MySQL
Driver = /usr/lib/odbc/libmyodbc.so
FileUsage = 1

【问题讨论】:

  • 顺便说一下,当我使用 ODBC 驱动程序连接到 Postgres 时,我没有遇到同样的问题。

标签: mysql odbc pyodbc


【解决方案1】:

找到了。我需要在连接参数中指定 Charset=UTF8,如下所示:

[ODBC Data Sources]
mu      = MySQL

[mu]
Description = MySQL Database Test
Driver = MySQL
Server = localhost
Database = ccc2
Port = 3306
Charset = UTF8

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-13
    • 2021-11-09
    • 2019-08-20
    • 1970-01-01
    • 2017-08-22
    • 1970-01-01
    • 2011-10-02
    相关资源
    最近更新 更多