数据库中的编码问题 - PHP [关闭]

问题描述 投票:0回答:3

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

这是我的配置文件

define("HOST", "localhost");
define("USER", "root");
define("DATABASE", "test");
define("PASSWORD", "");
define("SET NAMES 'utf8'"); #> you can do something like that?
php encoding
3个回答
1
投票

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


0
投票

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

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

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

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


0
投票

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

所以你可以这样做:

define("DB_ENCODING", 'utf8');

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

"SET NAMES '".DB_ENCODING."'"

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

mysqli_set_charset($con, DB_ENCODING);
© www.soinside.com 2019 - 2024. All rights reserved.