当我插入时,如何阻止mysql将'
转换为’
?
我认为它与charset或其他什么有关?
我使用php来执行mysql_insert。
答案 0 :(得分:15)
您发布的单引号称为“acute accent”,通常由某些Web应用程序从通用单引号转换而来。它是一个UTF8
字符,插入Latin-1
数据库后会转换为''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;
答案 1 :(得分:1)
这就是我所做的,它对我有用:
首先确保包含'的字段为'utf8_general_ci
然后将mysql_set_charset添加到您的代码
$db=mysql_connect("localhost", $your_username, $your_password);
mysql_set_charset('utf8',$db);
mysql_select_db($your_db_name, $db);
答案 2 :(得分:0)
也许有人会马上知道答案,但我不知道。但是,这里有一些关于要检查的内容的建议(并可能扩展问题)
在处理编码和转义时,您应该包含完整的数据历史
以上是因为写入文本文件的任何内容(浏览器,mysql客户端,Web服务器,php应用程序,以及可能已经完成它的几个图层)都会使字符编码陷入混乱。
要进行故障排除,您可以开始消除,因此第一步(在我的书中)是
SHOW VARIABLES LIKE 'character_set%'
的输出
(所以即使在这个简单的环境中,你有7个值可以影响数据的解析,存储和/或显示方式SHOW CREATE TABLE TableName
,并查找字符集和整理信息,包括表的默认值和列上的显式定义说完以上所有内容后,我认为任何西方脚本都不会对单引号字符进行转码。因此,您可能需要查看转义和其他数据处理。
修改强> 以上大部分内容来自答案和讨论here