Signatur
Beschreibung
pg_client_encoding() liefert den Namen der Zeichenkodierung, die für die angegebene PostgreSQL-Verbindung auf Client-Seite aktiv ist. Diese Kodierung bestimmt, in welchem Zeichensatz Daten zwischen PHP und dem PostgreSQL-Server übertragen werden.
Die Funktion ist besonders nützlich, um sicherzustellen, dass die Verbindung mit der erwarteten Kodierung (z. B. UTF8, LATIN1) arbeitet. In mehrsprachigen Anwendungen oder bei der Migration von Datenbanken sollte die Client-Kodierung stets geprüft werden, bevor Daten gelesen oder geschrieben werden.
Die Client-Kodierung kann mit pg_set_client_encoding() gesetzt werden. Stimmen Server- und Client-Kodierung nicht überein, kann es zu Datenverlust oder fehlerhafter Darstellung von Sonderzeichen kommen.
Wird kein $connection-Parameter übergeben, verwendet die Funktion die zuletzt geöffnete Verbindung. Ab PHP 8.1 muss eine explizite Verbindung übergeben werden, da die Verwendung der Standard-Verbindung als veraltet gilt.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $connection | PgSql\Connection | Eine PostgreSQL-Verbindungsinstanz, die von pg_connect() oder pg_pconnect() zurückgegeben wurde. Wird der Parameter weggelassen, wird die zuletzt geöffnete Verbindung verwendet (veraltet ab PHP 8.1). |
Rückgabewert
"UTF8", "LATIN1" oder "SQL_ASCII".Beispiele
Aktuelle Client-Kodierung ausgeben
<?php
$conn = pg_connect('host=localhost dbname=testdb user=postgres password=secret');
if (!$conn) {
die('Verbindung fehlgeschlagen');
}
$encoding = pg_client_encoding($conn);
echo 'Aktuelle Client-Kodierung: ' . $encoding;
pg_close($conn);
Kodierung prüfen und ggf. auf UTF8 setzen
<?php
$conn = pg_connect('host=localhost dbname=testdb user=postgres password=secret');
if (!$conn) {
die('Verbindung fehlgeschlagen');
}
$encoding = pg_client_encoding($conn);
if ($encoding !== 'UTF8') {
echo 'Kodierung war: ' . $encoding . ' – wird auf UTF8 geändert.' . PHP_EOL;
if (pg_set_client_encoding($conn, 'UTF8') === -1) {
die('Kodierung konnte nicht gesetzt werden.');
}
} else {
echo 'Kodierung ist bereits UTF8.' . PHP_EOL;
}
echo 'Aktive Kodierung: ' . pg_client_encoding($conn) . PHP_EOL;
pg_close($conn);
// Wichtig · Fallstricke
Achtung: Wenn die Client-Kodierung nicht mit der Datenbankserver-Kodierung übereinstimmt und keine automatische Konvertierung durch PostgreSQL möglich ist, können Daten beim Lesen oder Schreiben verstümmelt werden oder es treten Fehler auf. Prüfen Sie daher nach dem Verbindungsaufbau die Kodierung, insbesondere in Anwendungen, die Sonderzeichen oder Mehrbytezeichen verarbeiten.
Ab PHP 8.1 ist das Weglassen des $connection-Parameters als veraltet markiert (deprecated). Übergeben Sie stets explizit eine Verbindungsinstanz.