MySQL 编码奇怪的字符

MySQL encoding weird characters

正如很多人已经遇到的那样,我在 MySQL 中遇到了数据编码问题。 更具体地说,table 的排序规则似乎是 utf8_general_ci。插入的数据插入得很好,但是当 select 完成后,一些字符被翻译得很糟糕:

Marie-Thérèse becomes Marie-Thérèse.

是否可以执行 select 并将这些字符转换回原始值,还是不可能?就我而言,更改原始 table 比较困难,因此我宁愿在 select 查询中解决它。

当使用 phpmyadmin(或类似工具)并查看这些条目时,这些条目是否正常?

更新:如果不是,插入可能已经有缺陷,必须调整插入脚本的连接。

如果是这样,那么从技术上讲,这不是 MySQL 的问题,而是连接到它的软件的问题。参见示例:UTF-8 all the way through。您必须设置一些参数 on/after 打开连接。

顺便说一句:归类应该是无关紧要的。 http://dev.mysql.com/doc/refman/5.7/en/charset-general.html

要点是:排序规则告诉您,您必须如何 order/compare 字符串,这主要对特殊字符很重要,例如德语中的 äöü 或法语中的 àéô/... 因为它们 local/regional 排序规则说,ä 是 - 出于排序目的 - 与 a 完全相同(例如),在另一个排序规则中,ä 可能明显在 a 之后甚至在 z.

最后,问题似乎出在 运行 通过 cronbjob 完成这一切。 我们 运行 通过 cronjob 生成插入语句的脚本。显然,当手动 运行 运行脚本时,一切顺利,但是当通过 cronjob 运行 运行相同的脚本时,数据变得混乱。我们通过这篇文章解决了这个问题:http://www.logikdev.com/2010/02/02/locale-settings-for-your-cron-job/ 我们必须在 etc/environment 文件中添加变量 LANG。