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下运行的.
将CHARSET = UTF8添加到连接字符串中,我现在已启动并运行该应用程序.例如:
更改
cnxn = pyodbc.connect('DSN=localhost')
至
cnxn = pyodbc.connect('DSN=localhost;CHARSET=UTF8')
谢谢托马斯指出我正确的方向.升级到更高版本的PyODBC也可能有效.
| 归档时间: |
|
| 查看次数: |
4029 次 |
| 最近记录: |