Я хочу установить 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 на этой странице , вы можете использовать одну из следующих двух команд:
SET CLIENT_ENCODING TO 'value';
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