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。
正如很多人已经遇到的那样,我在 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。