9

我想为我的 PDO 对象设置 UTF8。此类可与 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") );

}
4

3 回答 3

5

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

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

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

使用 charset=utf8 正在(仅)与 mysql 一起工作......

于 2014-10-28T22:46:12.427 回答
3

根据我在本页第 21.2.3 节中看到的内容,您可以使用以下两个命令之一:

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

其中值 = UTF8。尝试使用:

SET CLIENT_ENCODING TO 'UTF8';

或者

SET NAMES 'UTF8';
于 2013-08-15T09:56:31.383 回答
1

很容易找到常规 SQL 查询的类比

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

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

$this->conn = new PDO("pgsql:host=".$this->host.";dbname=".$this->db.";charset=".$this->charset
于 2013-08-15T09:55:24.750 回答