我的网站上有日语来自mysql数据库。
网站上的其他日文文本显示正常,但数据库中出现的内容如下:
????????
数据库设置为UTF8,网页也是如此。
要解决此问题,在我对数据库进行任何调用之前,我使用:
$db->query("SET NAMES utf8");
我想知道是否有更好/更简单的方法来执行上述操作而无需在每次查询之前设置名称?
答案 0 :(得分:1)
您不必在每次查询之前使用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