Клиент Mysql 5.6 не может отображать символы UTF8

Клиент Mysql 5.6 не может отображать символы UTF8

Базы данных Mysql размещены на AWS RDS Mysql 5.6

На одном из экземпляров EC2 Cent OS 6.5 у меня был Mysql Client 5.1. Я использовал его для выполнения запросов SELECT через RDS-Mysql. Есть один конкретный запрос, который мы делаем для генерации CSV-файла. База данных содержит некоторые индийские языки, а именно: хинди, маратхи и бенгали. При использовании Mysql client 5.1 тексты на этих языках правильно сохранялись в CSV.

Я обновил клиент до mysql 5.6.26 (RPM-пакеты скачаны с сайта:ЗДЕСЬ(для Redhat/Oracle Linux). Теперь тот же запрос возвращает искаженные символы для того же запроса.

Короткий пример разницы в выводе:
клиент Mysql 5.1:

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

Клиент Mysql 5.6:

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

Я установил символ в '.my.cnf'

cat /root/.my.cnf


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

Я также проверил набор символов для базы данных/RDS (показать переменные типа 'char%'). Было несколько латинских наборов символов. Я изменил их на utf8 и снова проверил результат запроса SELECT --- Ничего не изменилось.
[A] До изменения параметров:

+--------------------------+-------------------------------------------+
| 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] После изменения параметров:

+--------------------------+-------------------------------------------+
| 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/ |
+--------------------------+-------------------------------------------+

В чем может быть проблема? Это ошибка в клиенте версии 5.6?

решение1

Я предполагаю, что произошло следующее: вы (или кто-то другой) создали базу данных не в кодировке utf-8 и вставили в нее данные в кодировке utf-8. Затем вы каким-то образом (мне неясно, произошло ли это, вы не упомянули об этом; но это не так уж и важно) обновили свою базу данных до версии 5.6 или, по крайней мере, клиент mysql. Новый клиент ясно видит, что кодировка базы данных — latin1, и неверно интерпретирует фактические данные в кодировке utf-8 (и у него есть на это право).

Я предлагаю вам сделать дамп базы данных с помощью клиента mysql 5.1, вы получите дамп, содержащий допустимые последовательности utf-8, затем вы создаете базу данных с кодировкой utf-8 и импортируете в нее данные с помощью более нового клиента. обратите внимание на директиву set namesв вашем дампе и измените ее при необходимости (на utf-8). Также обратите внимание, что не следует выполнять никаких деструктивных действий (вроде удаления баз данных), если вы не полностью удовлетворены результатом.

Связанный контент