MySQL编码奇怪的字符

时间:2016-07-27 06:29:13

标签: mysql sql encoding collation

正如很多人已经拥有的那样,我在MySQL中遇到了数据编码问题。 更具体地说,表的校对似乎是utf8_general_ci。插入的数据插入良好,但是当完成选择时,某些字符会被严重翻译:

  

Marie-Thérèse成为Marie-Thérése。

是否可以选择并将这些字符翻译回原始值,还是不可能?在我的情况下更改原始表更难,所以我宁愿在我的选择查询中解决它。

2 个答案:

答案 0 :(得分:1)

当使用phpmyadmin(或类似内容)并查看这些条目时,这些条目是否还可以?

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

如果是这样,那么从技术上来说,MySQL的故障并不是连接它的软件。例如,请参阅:UTF-8 all the way through。您必须在打开连接后/上设置一些参数。

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

要点是:整理告诉你,你如何订购/比较字符串,这对于特殊字符非常重要,例如德语中的äöü或法语中的àéô/ ...因为他们的本地/地区校对说,{ {1}} - 出于排序目的 - 与ä完全相同(例如),在另一个排序规则中,a可能明显地位于ä之后,甚至可能位于a之后。< / p>

答案 1 :(得分:0)

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