2016-07-27 61 views
0

正如很多人已经有了,我有一个与我的数据编码MySQL的问题。 更具体地说,该表的排序规则似乎是utf8_general_ci。插入的数据插入得很好,但是当选择完成时,某些字符会被翻译得不好:MySQL编码奇怪的字符

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

是否可以做一个选择和翻译这些字符回到原来的价值,或者是不可能的?在我的案例中更改原始表格更加困难,所以我宁愿在我的选择查询中解决它。

+0

可以修复数据。但首先,提供'SELECT col,HEX(col)FROM ...'来示例数据有多糟糕。并提供'SHOW CREATE TABLE'。 (有多种情况,在启动正确或错误的解决方案之前需要找到哪一个。) –

回答

0

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

1

当使用phpmyadmin(或类似的),并在看这些条目,那些条目好吗?

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

如果是这样,那么它在技术上不是MySQL的错,而是连接到它的软件。例如见:UTF-8 all the way through。打开连接后必须设置一些参数。

btw:整理应该是不相关的。 http://dev.mysql.com/doc/refman/5.7/en/charset-general.html

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

+0

我没有使用PHP。当我在MySQL Workbench中运行我的select命令时,这些条目是错误的。也许,在插入语句中,我需要提供一个编码或其他东西。 –

+0

这可能是正确的方法。我更新了我的帖子,通常只是检索... – Jakumi