我在我的网站上有来自mysql数据库的日语。在网站上替代手动“SET NAMES utf8”每个数据库调用
其他日文文本显示细腻,但出来的数据库的东西看起来像:
????????
的数据库设置为UTF-8,所以是网页。
要解决这个问题,在我做出我使用的数据库的任何呼叫:
$db->query("SET NAMES utf8");
我在想,如果有上面做,而不必每次查询之前设置的名称更好/更简单的方法?
我在我的网站上有来自mysql数据库的日语。在网站上替代手动“SET NAMES utf8”每个数据库调用
其他日文文本显示细腻,但出来的数据库的东西看起来像:
????????
的数据库设置为UTF-8,所以是网页。
要解决这个问题,在我做出我使用的数据库的任何呼叫:
$db->query("SET NAMES utf8");
我在想,如果有上面做,而不必每次查询之前设置的名称更好/更简单的方法?
在每次查询之前,您不必使用SET NAMES utf8
,只需在连接建立后运行即可。下面是与PDO为例:
try {
$dns = "mysql:host={HOST};dbname={DB}";
$user = "{USER}";
$pass = "{PASS}";
$con = new PDO($dns, $user, $pass);
} catch (Exception $e) {
echo "Connexion error ", $e->getMessage();
die();
}
$con->query("SET NAMES utf8;");
//and now, as many queries as you want
如果你使用PHP> = 5.3.6,您可以定义在连接字符串中的字符集(之前的PHP版本忽略它):
try {
$dns = "mysql:host={HOST};dbname={DB};charset=utf8";
$user = "{USER}";
$pass = "{PASS}";
$con = new PDO($dns, $user, $pass);
} catch (Exception $e) {
echo "Connexion error ", $e->getMessage();
die();
}
//and now, as many queries as you want
所以, 'SET NAMES utf8'修复了这个问题吗? (所有不错的DB库允许设置客户端编码,请检查你的文档。) – 2013-03-13 15:11:32
Set set names确实解决了这个问题,我只是想知道是否有更好的方法。 – panthro 2013-03-13 15:23:37
您只需要每个连接一次,而不是每个查询之前。另外,如果您使用[PDO](http://php.net/pdo),则可以对其进行配置,以便它自动为您执行此操作。 – 2013-03-13 15:25:39