正如很多人已经拥有的那样,我在MySQL中遇到了数据编码问题。 更具体地说,表的校对似乎是utf8_general_ci。插入的数据插入良好,但是当完成选择时,某些字符会被严重翻译:
Marie-Thérèse成为Marie-Thérése。
是否可以选择并将这些字符翻译回原始值,还是不可能?在我的情况下更改原始表更难,所以我宁愿在我的选择查询中解决它。
答案 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。