简体   繁体   中英

How set UTF-8 in PDO class constructor for PHP PgSQL database

I want to set UTF8 for my PDO object. This class works correctly with MySQL. I can't find an analog of array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES UTF8") for PgSQL and I can't work with cyrillic symbols.

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") );

}

Let me point out the comment by xmedeko, that is absolute right:

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

Source: http://php.net/manual/en/function.pg-connect.php

Using charset=utf8 is working (only) with mysql...

From what I see in section 21.2.3 on this page , you can use one of the following two commands:

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

where value = UTF8 . Try using:

SET CLIENT_ENCODING TO 'UTF8';

or

SET NAMES 'UTF8';

it is very easy to find an analog for the regular SQL query

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

However, encoding have to be set in DSN anyway

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM