【发布时间】:2015-12-26 02:49:28
【问题描述】:
这是我的 PDO 课程的一部分。我需要将utf-8 用于希伯来语,但是当我将ATTR_PERSISTENT 设置为true 时,输出文本将显示为?????? 如果我将ATTR_PERSISTENT 切换为false,输出将是正确的。
public function __construct() {
// Set DSN
$dsn = 'mysql:host=' . $this->host . ';dbname=' . $this->dbname;
// Set options
$options = array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_PERSISTENT => true
);
// Create a new PDO instanace
try {
$this->dbh = new PDO($dsn, $this->user, $this->pass, $options);
}
// Catch any errors
catch (PDOException $e) {
$this->error = $e->getMessage();
}
}
之间是否有冲突:
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'
还有:
PDO::ATTR_PERSISTENT => true
【问题讨论】:
-
文件的编码类型是什么?
-
奇怪的是,它是asked before,几乎没有引起注意。
-
您是否尝试将
charset直接设置到连接字符串中?喜欢dbname=' . $this->dbname;charset=utf8? -
Found one,看看有没有帮助。
标签: php database pdo utf-8 character-encoding