O cliente Mysql 5.6 não consegue mostrar caracteres UTF8

O cliente Mysql 5.6 não consegue mostrar caracteres UTF8

Os bancos de dados MySQL são hospedados no AWS RDS Mysql 5.6

Em uma das instâncias do EC2 Cent OS 6.5, eu tinha o Mysql Client 5.1. Usei-o para executar consultas SELECT no RDS-Mysql. Há uma consulta específica que fazemos para gerar um arquivo CSV. A base de dados contém algumas das línguas indianas, nomeadamente: Hindi, Marathi e Bengali. Ao usar o cliente Mysql 5.1, esses textos de idioma foram armazenados corretamente em CSV.

Atualizei o cliente para mysql 5.6.26 (RPMs baixados de:AQUIpara Redhat/Oracle Linux). Agora, a mesma consulta fornece caracteres ilegíveis para a mesma consulta.

Um pequeno exemplo da diferença na saída:
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>ध""

Eu configurei o caractere em '.my.cnf'

cat /root/.my.cnf


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

Também verifiquei o conjunto de caracteres para banco de dados/RDS (mostrar variáveis ​​como 'char%'). Havia alguns conjuntos de caracteres latinos. Alterei-os para utf8 e testei o resultado da consulta SELECT novamente --- Nada mudou.
[A] Antes das alterações 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] Após alterações 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/ |
+--------------------------+-------------------------------------------+

Qual poderia ser o problema aqui? É um bug no cliente versão 5.6?

Responder1

Suponho que aconteceu o seguinte: você (ou outra pessoa) criou o banco de dados não-utf-8 e inseriu os dados utf-8 nele. Então você de alguma forma (não está claro para mim se isso aconteceu, você não mencionou; no entanto, isso não é tão importante) atualizou seu banco de dados para 5.6, ou, pelo menos, o cliente mysql. O novo cliente vê claramente que a codificação do banco de dados é latin1 e interpreta mal os dados reais do utf-8 (e ele tem o direito de fazer isso).

Eu sugiro que você faça dump do banco de dados usando o cliente mysql 5.1, você obterá o dump contendo sequências utf-8 válidas, então criará o banco de dados com codificação utf-8 e importará dados para ele com o cliente mais recente. preste atenção à set namesdiretiva em seu dump e altere-a se necessário (para utf-8). Observe também que nenhuma ação destrutiva (como eliminar bancos de dados) deve ser executada, a menos que você esteja absolutamente satisfeito com o resultado.

informação relacionada