在mysql数据库中存储一些值,输入正在使用mysql_real_escape_string($value)
进行清理,并且显示正常。但是,在对数据库执行直接查询时,我在使用此表单编辑的每个文本字段上看到â€
等字符。这是怎么发生的?我在网页上显示值时没有显示,但如何防止这些字符出现呢?
我看了这个问题:Strange characters in mysql dbase似乎对输入中的字符名称有一些建议,但我怎样才能一劳永逸地解决这个问题呢?我相信更新这些值的人是直接从Microsoft Word复制和粘贴,因此我确信它与“智能引号”以及MS Word喜欢使用的其他此类奇特格式有关。
答案 0 :(得分:1)
正如您链接的答案所示,它来自PHP,默认情况下使用latin1编码连接到mysql。因此数据未正确插入数据库中。 另一个问题是,如果您在php中查询数据,则可以获得正确的数据,因为它们的编码方式与它们的编码方式相同。但是如果你在数据库中执行直接查询(例如,在控制台上使用mysql客户端),数据似乎就会被破坏。
这就是为什么答案是在其他任何事情之前查询“SET NAMES UTF8”。 您可以参数mysql服务器以强制任何连接上的utf8。我没有看到任何其他解决方案。