Start · Sprachen · PHP · Referenz · pg_client_encoding

pg_client_encoding

Funktion

Gibt die aktuell eingestellte Zeichenkodierung der PostgreSQL-Client-Verbindung zurück.

seit PHP 4.0.3 Kategorie: db

Signatur

pg_client_encoding(PgSql\Connection $connection = ?): string

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

Typ
string
Beschreibung
Gibt den Namen der aktuellen Client-Zeichenkodierung als Zeichenkette zurück, z. B. "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);
Aktuelle Client-Kodierung: UTF8

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);
Kodierung ist bereits UTF8. Aktive Kodierung: UTF8

// 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.