PyODBC输出不正确的UTF-16

Jon*_*han 8 python mysql unicode pyodbc

我正在尝试从MySQL数据库中提取一个表名列表.代码的相关部分如下:

conn = pyodbc.connect('...')
cursor = conn.cursor()
for table in cursor.tables():
    print table.table_name
Run Code Online (Sandbox Code Playgroud)

对于每张桌子,它都会打印出一堆乱码(钻石中的方框和问号).使用repr(table.table_name)它打印:

u'\U00500041\U004c0050\U00430049\U00540041\U004f0049'
Run Code Online (Sandbox Code Playgroud)

对于名为"APPLICATION"的表.

如果将每个32位字符视为两个16位字符,则会得到字符串"PALPCITAOI".交换字符对(1和2,3和4等),它产生"APPLICATIO"(缺少"N").据推测,它交换了N和空字符,导致缺少N(假设以空字符结尾的字符串).

如何才能正确获取表名?

这是在Python 2.4,PyODBC 2.1和MySQL 5.0.22下运行的.

Jon*_*han 5

将CHARSET = UTF8添加到连接字符串中,我现在已启动并运行该应用程序.例如:

更改

cnxn = pyodbc.connect('DSN=localhost')

cnxn = pyodbc.connect('DSN=localhost;CHARSET=UTF8')

谢谢托马斯指出我正确的方向.升级到更高版本的PyODBC也可能有效.