Mysql转向';进入’;?
如何阻止mysql将Mysql转向';进入’;?,mysql,character-encoding,Mysql,Character Encoding,如何阻止mysql将“转换为?”™当我插入时 我相信这和charset有什么关系 我正在使用php进行mysql\u插入。也许有人会立即知道答案,但我不知道。不过,这里有一些关于检查内容的建议(可能会扩展问题) 在处理编码和转义时,应包括数据的完整历史记录 它是如何创建的 在出现问题之前,它发生了什么(它是否必须经过备份、电子邮件、是否在其他服务器、操作系统等上创建;如果它被传输,那么它是否作为文本文件?) 上述原因是,任何写入文本文件的操作(浏览器、mysql客户端、web服务器、php应
“
转换为?”™代码>当我插入时
我相信这和charset有什么关系
我正在使用php进行mysql\u插入。也许有人会立即知道答案,但我不知道。不过,这里有一些关于检查内容的建议(可能会扩展问题)
在处理编码和转义时,应包括数据的完整历史记录
- 它是如何创建的
- 在出现问题之前,它发生了什么(它是否必须经过备份、电子邮件、是否在其他服务器、操作系统等上创建;如果它被传输,那么它是否作为文本文件?)
上述原因是,任何写入文本文件的操作(浏览器、mysql客户端、web服务器、php应用程序等)都可能会打乱字符编码
要进行故障排除,您可以开始消除,因此(在我的书中)第一步是
使用mysql命令行客户端连接到mysql服务器
检查显示变量的输出,如“character\u set%”
(因此,即使在这个简单的环境中,也有7个值可以影响数据的解析、存储和/或显示方式
检查显示创建表TableName
,并查找字符集和排序规则信息,这两种信息都是表的默认信息和列的显式定义
说到以上,我认为任何西方脚本都不会对单个引号字符进行转码。因此,您可能需要查看转义和其他数据处理
编辑
回答和讨论中的大部分内容您发布的单引号被称为“”,它通常由一些web应用程序从通用单引号转换而来。它是一个UTF8
字符,插入Latin-1
数据库时会转换为–€™'. 这意味着您需要将MySQL的字符集更改为UTF8
,或者将网站的字符集更改为Latin-1
。首选前者:
ALTER DATABASE YourDatabase CHARACTER SET utf8;
ALTER TABLE YourTableOne CONVERT TO CHARACTER SET utf8;
ALTER TABLE YourTableTwo CONVERT TO CHARACTER SET utf8;
...
ALTER TABLE YourTableN CONVERT TO CHARACTER SET utf8;
这就是我所做的,它对我起了作用:
首先确保包含“的列是utf8\u general\u ci”
然后将mysql\u set\u字符集添加到代码中
$db=mysql_connect("localhost", $your_username, $your_password);
mysql_set_charset('utf8',$db);
mysql_select_db($your_db_name, $db);
这与字符集有关。如何插入/检索数据-即,您使用的是哪种库和编程语言(或可能是ORM)?数据库是什么字符集?是的,它与字符集有关。检查表的字符集和连接字符串中的字符集。使用正确的编码或unicode/utf。我应该编写一个查找“x
将a
转换为b
”类型的问题,并给出一个通用的“您正在使用UTF-8,但您的员工正在将其解释为拉丁语-1”“回答并进行数十亿次重复…我做了这个,现在表是utf8\u general\u ci,但我仍然遇到同样的问题?@Hailwood:你也应该检查连接编码。我尝试了'mysql\u set\u charset'('utf8\u general\u ci',$this->link);但这并不重要difference@Hailwood:然后您应该发布一些代码,或者更好的是,发布一个小片段来重现问题。