MySQL 编码奇怪的字符

标签 mysql sql encoding collation

正如许多人已经遇到的那样,我在 MySQL 中的数据编码遇到了问题。 更具体地说,该表的排序规则似乎是 utf8_general_ci。插入的数据插入得很好,但是当选择完成时,一些字符被翻译得很糟糕:

Marie-Thérèse becomes Marie-Thérèse.

是否可以选择并将这些字符转换回原始值,还是不可能?在我的例子中,更改原始表比较困难,因此我宁愿在选择查询中解决它。

最佳答案

当使用 phpmyadmin(或类似工具)并查看这些条目时,这些条目正常吗?

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

如果是这样,那么从技术上讲,这不是 MySQL 的错误,而是与其连接的软件的错误。例如:UTF-8 all the way through 。您必须在打开连接时/之后设置一些参数。

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

要点是:排序规则告诉您如何排序/比较字符串,这对于德语中的 äöü 或法语中的 àéô 等特殊字符非常重要/...,因为它们的本地/区域排序规则表示,ä - 用于排序目的 - 与 a 完全相同(例如),在另一种排序规则中,ä 可以明显位于 a 之后code> 甚至在 z 之后。

关于MySQL 编码奇怪的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38605300/

相关文章:

mysql - docker 中的巨大静态(mysql)数据库

mysql - 如何通过一次查询从另一个表的数据更新一个表的所有行字段?

mysql - 空 MySQL concatenated join 导致查询失败

php - 如何在 php 中准备 INSERT INTO SELECT 查询?

java - 如何使用java将日语编码文本(Unicode类型除外)复制到剪贴板?

c# - 检测c#中的特殊符号

php - 解释 MySQL 查询

sql - t-sql 返回错误代码与 RaiseError

sql - 在 Impala 中将数组列查询为行的解决方法

javascript - 如何处理 node.js 中/来自 node.js 的 (cli) 输出的标准输出流的字符编码?