Как установить UTF-8 в конструкторе класса PDO для базы данных PHP PgSQL

Я хочу установить UTF8 для моего объекта PDO. Этот класс корректно работает с MySQL. Я не могу найти аналог array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES UTF8") для PgSQL, и я не могу работать с кириллическими символами.

 class oop{ private $host="localhost"; private $user="xxxx"; private $db="xxxx"; private $pass="111111"; private $conn; public function __construct(){ $this->conn = new PDO("pgsql:host=".$this->host.";dbname=".$this->db,$this->user,$this->pass,array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES UTF8") ); } 

Из того, что я вижу в разделе 21.2.3 на этой странице , вы можете использовать одну из следующих двух команд:

  1. SET CLIENT_ENCODING TO 'value';
  2. SET NAMES 'value';

где значение = UTF8 . Попробуйте использовать:

 SET CLIENT_ENCODING TO 'UTF8'; 

или

 SET NAMES 'UTF8'; 

Позвольте мне отметить комментарий xmedeko, это абсолютное право:

 pg_connect("host=localhost options='--client_encoding=UTF8'"); 

Источник: http://php.net/manual/en/function.pg-connect.php

Использование charset = utf8 работает (только) с mysql …

очень легко найти аналог для обычного SQL-запроса

 $pdo->query("SET NAMES UTF8") 

Однако кодирование должно быть установлено в DSN в любом случае

 $this->conn = new PDO("pgsql:host=".$this->host.";dbname=".$this->db.";charset=".$this->charset