如何在PHP PgSQL数据库的PDO类构造函数中设置UTF-8

时间:2013-08-15 09:47:03

标签: php postgresql utf-8 pdo

我想为我的PDO对象设置UTF8。这个类适用于MySQL。 我找不到PgSQL的array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES UTF8")类似物,我无法使用西里尔符号。

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

}

3 个答案:

答案 0 :(得分:5)

让我指出xmedeko的评论,这是绝对正确的:

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

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

使用charset = utf8(仅)使用mysql ...

答案 1 :(得分:3)

从我在this page的第21.2.3节中看到的内容,您可以使用以下两个命令之一:

  1. SET CLIENT_ENCODING TO 'value';
  2. SET NAMES 'value';
  3. 其中value = UTF8。尝试使用:

    SET CLIENT_ENCODING TO 'UTF8';
    

    SET NAMES 'UTF8';
    

答案 2 :(得分:1)

很容易找到常规SQL查询的模拟

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

但是,无论如何都必须在DSN中设置编码

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