Mysql 5.6客户端无法显示UTF8字符

Mysql数据库托pipe在AWS RDS Mysql 5.6上

在其中一个EC2 Cent OS 6.5实例中,我使用了Mysql Client 5.1。 我用它来通过RDS-Mysql执行SELECT查询。 有一个特定的查询,我们做生成一个CSV文件。 该数据库包含一些印度语言,即印地语,马拉地语和孟加拉语。 在使用Mysql 5.1客户端时,这些语言文本以CSV格式正确存储。

我将客户端升级到MySQL 5.6.26(从Redhat / Oracle Linux的HERE下载的RPM)。 现在,相同的查询给出相同查询的乱码字符。

输出差异的一个简短例子:
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%'这样的variables)。 有一对拉丁字符集。 我把它们改成了utf8,再次testing了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中的错误吗?

我猜想会发生以下情况:您(或其他人)创build了非UTF-8数据库并在其中插入了utf-8数据。 然后你以某种方式(我不清楚这是否发生,你没有提到它,但是这不是那么重要)升级你的数据库到5.6,或者至less,MySQL客户端。 新客户清楚地看到数据库编码是latin1,误解了实际的utf-8数据(他有权这么做)。

我build议你使用mysql 5.1客户端转储数据库,你将得到包含有效utf-8序列的转储,然后用utf-8编码创build数据库,并用新的客户端将数据导入到其中。 请注意转储中的set names指令,并根据需要更改它(到utf-8)。 另外请注意,除非您对结果绝对满意,否则不应执行破坏性操作(如删除数据库)。