正如很多人已经有了,我有一个与我的数据编码MySQL的问题。 更具体地说,该表的排序规则似乎是utf8_general_ci。插入的数据插入得很好,但是当选择完成时,某些字符会被翻译得不好:MySQL编码奇怪的字符
Marie-Thérèse变成Marie-Thérèse。
是否可以做一个选择和翻译这些字符回到原来的价值,或者是不可能的?在我的案例中更改原始表格更加困难,所以我宁愿在我的选择查询中解决它。
正如很多人已经有了,我有一个与我的数据编码MySQL的问题。 更具体地说,该表的排序规则似乎是utf8_general_ci。插入的数据插入得很好,但是当选择完成时,某些字符会被翻译得不好:MySQL编码奇怪的字符
Marie-Thérèse变成Marie-Thérèse。
是否可以做一个选择和翻译这些字符回到原来的价值,或者是不可能的?在我的案例中更改原始表格更加困难,所以我宁愿在我的选择查询中解决它。
最后,它似乎是通过一个cronbjob运行它的问题。 我们通过生成插入语句的cronjob运行脚本。显然,手动运行脚本时,一切都很顺利,但是当通过cronjob运行相同的脚本时,数据会变得混乱。我们通过这篇文章解决了这个问题:http://www.logikdev.com/2010/02/02/locale-settings-for-your-cron-job/ 我们必须在etc/environment文件中添加一个变量LANG。
当使用phpmyadmin(或类似的),并在看这些条目,那些条目好吗?
更新:如果没有,插入可能已经存在缺陷,并且必须修改插入脚本的连接。
如果是这样,那么它在技术上不是MySQL的错,而是连接到它的软件。例如见:UTF-8 all the way through。打开连接后必须设置一些参数。
btw:整理应该是不相关的。 http://dev.mysql.com/doc/refman/5.7/en/charset-general.html
要点是:排序规则告诉你,你如何排序/比较字符串,这对于德语中的äöü或法语中的àéô等特殊字符非常重要,因为他们的本地/区域整理说,ä
是 - 为了订购目的 - 完全像a
(例如),在另一个整理中,ä
可能明显地在a
之后或甚至在z
之后。
我没有使用PHP。当我在MySQL Workbench中运行我的select命令时,这些条目是错误的。也许,在插入语句中,我需要提供一个编码或其他东西。 –
这可能是正确的方法。我更新了我的帖子,通常只是检索... – Jakumi
可以修复数据。但首先,提供'SELECT col,HEX(col)FROM ...'来示例数据有多糟糕。并提供'SHOW CREATE TABLE'。 (有多种情况,在启动正确或错误的解决方案之前需要找到哪一个。) –