数据库中的编码问题 - PHP

时间:2014-07-28 07:55:59

标签: php encoding

我创建了一个配置文件,我将其包含在每个创建的文件中。此配置文件需要用于连接到数据库而不在每个文件中声明它。问题是,当我使用查询将数据传递到表中时,编码已损坏。我已经看过几个在线解决方案,但是有一种方法可以在配置文件中集成修复程序吗?这样就不必在每次查询之前设置编码类型。 如果我插入:“这是一个测试”,则在数据库中输入: “这是一个考验”。

这是我的配置文件

define("HOST", "localhost");
define("USER", "root");
define("DATABASE", "test");
define("PASSWORD", "");
define("SET NAMES 'utf8'"); #> you can do something like that?

3 个答案:

答案 0 :(得分:1)

只需运行查询SET NAMES'UTF8';在连接到数据库之后的类构造函数中。然而,如果您仍然在某处编码时遇到问题,请编写一个运行集名称查询的函数,这样您就可以在需要时轻松调用它。

答案 1 :(得分:0)

你的桌子里有unicode字符吗? 每当您想要将数据发送到具有无法用纯ASCII表示的字符的服务器时,就需要“SET NAMES'utf8'',如'ñ'或'ö'。

如果MySQL实例未配置为默认情况下从客户端连接预期UTF-8编码(许多是,取决于您的位置和平台。)

如果您不了解Unicode的工作原理,请阅读http://www.joelonsoftware.com/articles/Unicode.html

如果您不确定,请尝试从配置文件中删除最后一行并尝试一下。

答案 2 :(得分:0)

首先,您需要运行此查询。但是,将查询放入define并不是一个好主意,而且这个定义在您向我们展示的代码中没有任何名称。

所以你可以这样做:

define("DB_ENCODING", 'utf8');

然后在连接数据库后运行查询:

"SET NAMES '".DB_ENCODING."'"

然而,它仍然不是最好的选择。例如,如果你使用mysqli,你可以使用mysqli_set_charset(),所以你可以使用:

mysqli_set_charset($con, DB_ENCODING);