我创建了一个配置文件,我将其包含在每个创建的文件中。此配置文件需要用于连接到数据库而不在每个文件中声明它。问题是,当我使用查询将数据传递到表中时,编码已损坏。我已经看过几个在线解决方案,但是有一种方法可以在配置文件中集成修复程序吗?这样就不必在每次查询之前设置编码类型。 如果我插入:“这是一个测试”,则在数据库中输入: “这是一个考验”。
这是我的配置文件
define("HOST", "localhost");
define("USER", "root");
define("DATABASE", "test");
define("PASSWORD", "");
define("SET NAMES 'utf8'"); #> you can do something like that?
答案 0 :(得分:1)
只需运行查询SET NAMES'UTF8';在连接到数据库之后的类构造函数中。然而,如果您仍然在某处编码时遇到问题,请编写一个运行集名称查询的函数,这样您就可以在需要时轻松调用它。
答案 1 :(得分:0)
如果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);