Php PDO Postgresql UTF8字符集

Php PDO Postgresql UTF8字符集,php,sql,postgresql,pdo,character-encoding,Php,Sql,Postgresql,Pdo,Character Encoding,我正在寻找一种使用UTF8字符集连接到postgresql数据库的方法 目前,我必须在连接之后发送一个查询请求来指定字符集。这根本不是最优的 $connect = new \PDO("pgsql:host=$this->host;dbname=$this->base", $this->user, $this->pass); $connect->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTI

我正在寻找一种使用UTF8字符集连接到postgresql数据库的方法

目前,我必须在连接之后发送一个查询请求来指定字符集。这根本不是最优的

    $connect = new \PDO("pgsql:host=$this->host;dbname=$this->base", $this->user, $this->pass);
    $connect->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
    $connect->query("SET NAMES '$this->charset'");
MySQL允许在参数上传递一个表来指定字符集,我正在寻找相同的东西

        $this->db = new \PDO("pgsql:host=$this->PARAM_hote;dbname=$this->PARAM_nom_bd", $this->PARAM_utilisateur, $this->PARAM_mot_passe, array(\PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
        $this->db->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);

尝试在构造函数中添加参数:

$connect = new \PDO("pgsql:host=$this->host;dbname=" . $this->base . ";options='-c client_encoding=utf8'", $this->user, $this->pass);
$connect->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);

尝试在构造函数中添加参数:

$connect = new \PDO("pgsql:host=$this->host;dbname=" . $this->base . ";options='-c client_encoding=utf8'", $this->user, $this->pass);
$connect->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
与:

new PDO('pgsql:host=' .  $db_host . ';dbname=' . $db_name . ';options=\'--client_encoding=UTF8\'', $db_username, $db_password, array(PDO::ATTR_PERSISTENT => true));
事实上,传递选项的单引号--client_encoding=UTF8非常重要,而双引号不起作用。

附带:

new PDO('pgsql:host=' .  $db_host . ';dbname=' . $db_name . ';options=\'--client_encoding=UTF8\'', $db_username, $db_password, array(PDO::ATTR_PERSISTENT => true));

事实上,传递选项的单引号--client_encoding=UTF8非常重要,而双引号不起作用。

您可以像这样传递“options”键:

$dbh = new PDO
  (
    "pgsql:dbname=mydbname;host=myhost;port=5432;options='--client_encoding=UTF8'",
    "username",
    "password"
   );

您可以按如下方式传递“选项”键:

$dbh = new PDO
  (
    "pgsql:dbname=mydbname;host=myhost;port=5432;options='--client_encoding=UTF8'",
    "username",
    "password"
   );

您是否尝试过在连接字符串中使用
charset=charset\u?类似于
…dbname=SOME\u DB;charset=SOME\u charset…
供参考:您是否尝试在连接字符串中使用
charset=charset\u?类似于
…dbname=SOME\u DB;字符集=一些字符集…
供参考: