Estoy tratando de extraer una lista de nombres de tablas de una base de datos MySQL. Las partes pertinentes del Código son los siguientes:Salida de PyODBC incorrecta UTF-16
conn = pyodbc.connect('...')
cursor = conn.cursor()
for table in cursor.tables():
print table.table_name
Parte de cualquier imprime un montón de personajes e incomprensibles (cajas y signos de interrogación en diamantes). Usando repr(table.table_name)
se imprime:
u'\U00500041\U004c0050\U00430049\U00540041\U004f0049'
de la tabla denominada "Aplicación".
Si usted trata a cada personaje de 32 bits como dos caracteres 16 bits que presentamos lo mejor cadena "PALPCITAOI". Intercambiando pares de caracteres (1 y 2, 3 y 4, etc.) produce "APLICACIÓN" (falta la "N"). Presumiblemente, cambió N y el carácter nulo, lo que resulta en la falta de N (suponiendo cadenas terminadas en nulo).
¿Cómo puedo obtener los nombres de las tablas correctamente?
Esto se ejecuta en Python 2.4, 2.1 pyodbc, y MySQL 5.0.22.
Parece que [este error] (http://code.google.com/p/pyodbc/issues/detail? id = 78 & can = 1 & q = UTF-16). Intente usar una versión más nueva de PyODBC. –
No he podido encontrar una versión más nueva de 32 bits de PyODBC para Linux (CENTOS 5.1), pero encontré el código fuente aquí [http://code.google.com/p/pyodbc/downloads/list](http : //code.google.com/p/pyodbc/downloads/list). ¿Alguien sabe dónde puedo encontrar una versión posterior de un RPM de 32 bits para PyODBC? – Jonathan
@Thomas K, intenté agregar CHARSET = UTF8 a mi cadena de conexión como: 'cnxn = pyodbc.connect ('DSN = localhost; CHARSET = UTF8')' y eso funcionó en una de las áreas problemáticas. ¡Gracias por su asistencia! – Jonathan