2013-08-15 10 views
6

Voglio impostare UTF8 per il mio oggetto PDO. Questa classe funziona correttamente con MySQL. Non riesco a trovare un analogo di array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES UTF8") per PgSQL e non riesco a lavorare con i simboli cirillici.Come impostare UTF-8 nel costruttore di classi PDO per il database PHP 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")); 

} 
+1

Per quello che vale, appare come predefinito per UTF-8 per me senza impostarlo esplicitamente su un'installazione Postgres predefinita. Non riesco a trovare un interruttore documentato per questo tramite ATM. – deceze

+0

Perché hai bisogno di tutte queste variabili private? $ utente, $ db, $ pass? –

+0

È necessario perché, il database mysql non ha funzionato con i simboli cirillici, prima di questo comando. – vili

risposta

3

Da quello che vedo nella sezione 21.2.3 su this page, è possibile utilizzare uno dei seguenti due comandi:

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

dove valore = UTF8. Prova con:

SET CLIENT_ENCODING TO 'UTF8'; 

o

SET NAMES 'UTF8'; 
1

è molto facile trovare un analogo per la query SQL regolare

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

Tuttavia, la codifica devono essere impostato in DSN comunque

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

La cosa strana è per pgsql è * non * nel manuale per dsn. docsbug? – PeeHaa

+0

Provo questo: '$ this-> conn = nuovo PDO (" pgsql: host = ". $ This-> host."; Dbname = ". $ This-> db, $ this-> user, $ this-> passare, $ this-> SET CLIENT_ENCODING TO 'UTF8'); ', ma ho sbagliato: errore di sintassi, T_STRING imprevisto – vili

+2

@vili devi prima avere una conoscenza di base della sintassi di PHP. –

Problemi correlati