2013-09-27 47 views
0

将某些值存储在mysql数据库中,输入正在用mysql_real_escape_string($value)进行消毒,并且显示正常。但是,在对数据库执行直接查询时,我看到在使用此表单编辑的每个文本字段上都有â€等字符。这是如何发生的?当我在网页上显示值时,它不显示,但我怎样才能防止这些字符出现?'在mysql数据库中的字符

我看了这个问题:Strange characters in mysql dbase似乎有一些关于在输入上设置字符名称的建议,但我该如何解决这个问题呢?我相信更新这些值的人是直接从Microsoft Word进行复制和粘贴的,所以我确信它与“智能引用”以及MS Word喜欢使用的其他这种花哨格式有关。

+2

请阅读此内容http://stackoverflow.com/questions/279170/utf-8-all-the-way-through-my-web-application-apache-mysql-php –

回答

1

正如您所链接的答案所示,它来自PHP,默认情况下它使用latin1编码连接到mysql。所以数据没有被正确地插入到数据库中。 另一个问题是,如果你在php中查询数据,你会得到正确的数据,因为它们被“解码”,就像它们被编码一样。但是,如果您在数据库中执行直接查询(例如,在控制台上使用mysql客户端),那么数据看起来很糟糕

这就是为什么答案是在其他任何事情之前查询“SET NAMES UTF8”。 你可以通过参数mysql服务器在任何连接上强制使用utf8。我没有看到任何其他解决方案。