Signatur
Beschreibung
pg_set_client_encoding() legt die Zeichenkodierung fest, die der PostgreSQL-Client (also PHP) für die Kommunikation mit dem Datenbankserver verwendet. Damit wird sichergestellt, dass Strings korrekt zwischen PHP und PostgreSQL konvertiert werden, wenn Client und Server unterschiedliche Kodierungen nutzen.
Die Funktion ist besonders wichtig, wenn die PHP-Anwendung mit einer anderen Kodierung arbeitet als der PostgreSQL-Server. Typischerweise wird UTF8 als Kodierung gesetzt, um eine einheitliche Unicode-Verarbeitung zu gewährleisten. Sie entspricht dem SQL-Befehl SET CLIENT_ENCODING TO ....
Gültige Kodierungsnamen sind unter anderem UTF8, LATIN1, WIN1252 oder SQL_ASCII. Bei einer ungültigen Kodierung gibt die Funktion -1 zurück. Es empfiehlt sich, die Kodierung direkt nach dem Verbindungsaufbau zu setzen, bevor Daten gelesen oder geschrieben werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $connection Pflicht | PgSql\Connection | Eine aktive PostgreSQL-Verbindungsinstanz, die von pg_connect() oder pg_pconnect() zurückgegeben wurde. |
|
| $encoding Pflicht | string | Der Name der gewünschten Client-Kodierung, z. B. UTF8, LATIN1, WIN1252 oder SQL_ASCII. |
Rückgabewert
0 bei Erfolg zurück, oder -1 wenn die angegebene Kodierung ungültig oder ein Fehler aufgetreten ist.Beispiele
Client-Kodierung auf UTF-8 setzen
<?php
$conn = pg_connect('host=localhost dbname=testdb user=postgres password=geheim');
if (!$conn) {
die('Verbindung fehlgeschlagen');
}
$result = pg_set_client_encoding($conn, 'UTF8');
if ($result === 0) {
echo 'Kodierung erfolgreich auf UTF8 gesetzt.';
} else {
echo 'Fehler beim Setzen der Kodierung.';
}
// Aktuelle Kodierung auslesen
$encoding = pg_client_encoding($conn);
echo PHP_EOL . 'Aktuelle Kodierung: ' . $encoding;
pg_close($conn);
?>
Ungültige Kodierung – Fehlerbehandlung
<?php
$conn = pg_connect('host=localhost dbname=testdb user=postgres password=geheim');
if (!$conn) {
die('Verbindung fehlgeschlagen');
}
$result = pg_set_client_encoding($conn, 'UNGUELTIGE_KODIERUNG');
if ($result === -1) {
echo 'Ungültige Kodierung angegeben. Bitte einen gültigen Kodierungsnamen verwenden.';
} else {
echo 'Kodierung gesetzt.';
}
pg_close($conn);
?>
// Wichtig · Fallstricke
Sicherheitshinweis: Eine falsch gesetzte oder inkonsistente Zeichenkodierung kann dazu führen, dass Eingaben nicht korrekt escaped werden. Dies kann in Kombination mit multibyte-unsicheren Kodierungen wie LATIN1 oder SQL_ASCII unter Umständen zu SQL-Injection-Lücken führen, wenn Sonderzeichen nicht korrekt behandelt werden. Es wird daher dringend empfohlen, UTF8 konsistent auf Server- und Client-Seite zu verwenden.
Ab PHP 8.1 ist der erste Parameter vom Typ PgSql\Connection (statt dem früheren Resource-Typ). Die Funktion ist nicht zu verwechseln mit pg_client_encoding(), welche die aktuell gesetzte Kodierung lediglich ausliest.