El cliente MySQL 5.6 no puede mostrar caracteres UTF8

El cliente MySQL 5.6 no puede mostrar caracteres UTF8

Las bases de datos Mysql están alojadas en AWS RDS Mysql 5.6

En una de las instancias EC2 Cent OS 6.5, tenía Mysql Client 5.1. Lo usé para ejecutar consultas SELECT a través de RDS-Mysql. Hay una consulta particular que hacemos para generar un archivo CSV. La base de datos contiene algunos de los idiomas indios, a saber: hindi, marathi y bengalí. Al utilizar el cliente Mysql 5.1, estos textos de idioma se almacenaron correctamente en CSV.

Actualicé el cliente a mysql 5.6.26 (RPM descargados de:AQUÍpara Red Hat/Oracle Linux). Ahora, la misma consulta proporciona caracteres confusos para la misma consulta.

Un breve ejemplo de la diferencia en la salida:
cliente Mysql 5.1:

"365253","121","publish","लेनोवो के3 नोट 4जी स्मार्टफोन आज फ्लैश सेल के लिए उपलब्ध है। हालांकि इस फ्लैश सेल में वहीं उपभोक्ता भाग ले पाएंगे जिन्होंने पहले ही इसके लिए रजिस्ट्रेशन किया हो। लेनोवो के3 नोट एक्सक्लूसिवली ईकाॅमर्स साइट

Cliente MySQL 5.6:

"365253","121","publish","लेनोवो का ससà¥<U+008D>ता 4जी फैबलेट के3 नोट आज फà¥<U+008D>लैश के लिà¤<U+008F> होगा उपलबà¥<U+008D>ध""

He configurado el carácter en '.my.cnf'

cat /root/.my.cnf


[client]
user=captain
password=GuruWOWKnowsA11
default-character-set = utf8

También verifiqué el juego de caracteres para la base de datos/RDS (mostrar variables como 'char%'). Había un par de caracteres latinos. Los cambié a utf8 y probé nuevamente el resultado de la consulta SELECT. Nada cambió.
[A] Antes de cambios de parámetros:

+--------------------------+-------------------------------------------+
| Variable_name            | Value                                     |
+--------------------------+-------------------------------------------+
| character_set_client     | utf8                                      |
| character_set_connection | utf8                                      |
| character_set_database   | latin1                                    |
| character_set_filesystem | binary                                    |
| character_set_results    | utf8                                      |
| character_set_server     | latin1                                    |
| character_set_system     | utf8                                      |
| character_sets_dir       | /rdsdbbin/mysql-5.6.22.R1/share/charsets/ |
+--------------------------+-------------------------------------------+

[B] Después de cambios de parámetros:

+--------------------------+-------------------------------------------+
| Variable_name            | Value                                     |
+--------------------------+-------------------------------------------+
| character_set_client     | utf8                                      |
| character_set_connection | utf8                                      |
| character_set_database   | utf8                                      |
| character_set_filesystem | binary                                    |
| character_set_results    | utf8                                      |
| character_set_server     | utf8                                      |
| character_set_system     | utf8                                      |
| character_sets_dir       | /rdsdbbin/mysql-5.6.22.R1/share/charsets/ |
+--------------------------+-------------------------------------------+

¿Cuál podría ser el problema aquí? ¿Es un error en la versión 5.6 del cliente?

Respuesta1

Supongo que sucedió lo siguiente: usted (u otra persona) creó la base de datos que no es utf-8 e insertó los datos utf-8 en ella. Luego, de alguna manera (no me queda claro si sucedió, no lo mencionaste; sin embargo, esto no es tan importante) actualizaste tu base de datos a 5.6, o, al menos, el cliente mysql. El nuevo cliente ve claramente que la codificación de la base de datos es latin1 y malinterpreta los datos reales de utf-8 (y tiene todo el derecho a hacerlo).

Le sugiero que descargue la base de datos usando el cliente mysql 5.1, obtendrá el volcado que contiene secuencias utf-8 válidas, luego creará una base de datos con codificación utf-8 e importará datos con un cliente más nuevo. preste atención a la set namesdirectiva en su volcado y cámbiela si es necesario (al utf-8). También tenga en cuenta que no se deben realizar acciones destructivas (como eliminar bases de datos) a menos que esté absolutamente satisfecho con el resultado.

información relacionada