Wie kann ich in der Npgsql Version 2.0.9 in der NpgsqlConnection Klasse Encoding auf ASCII umstellen?
In der Dokumentation für den Connection String Parameter steht:
Encoding
Obsolete. Always returns the string “Unicode”, and silently ignores attempts to set it.
Ich habe jetzt ein Problem mit der Darstellung der Umlauten, weil die Datenbank mit ASCII Codierung angelegt wurde.
Projekt : Datenbank auf PostgreSQL 8.1 mit SQL_ASCII Kodierung + Client Programm in Csharp Framework 2.0 mit dem Zugriff auf der Datenbank über Npgsql Version 1.0.0.
Das Programm ist schon im Einsatz und die Daten wurden in der Datenbank gespeichert.
Wir möchten jetzt auf die neue Version des Npgsql umsteigen. Nach dem Umstellen auf der Version 2.0.9 wurden alle Umlauten in den Wörtern, die schon in der Datenbank gespeichert wurden, in den Programmmasken falsch dargestellt (als Viereck).
In psql werden die Wörter mit Umlauten aus der Datenbank falsch dargestellt. Ich habe das mit SQL_ASCII und latin1 Client_Codierung ausprobiert.
In pgAdmin 1.8.4 werden die Daten korrekt angezeigt.
Ähm, ich glaub, wir haben da einen Denkfehler. Habe ich früher übersehen.
Deine Datenbank hat SQL_ASCII als Encoding. Das ist aber im Prinzip kein Encoding sondern schiebt die Daten nur 1:1 in die Datenbank.
Du hast nun zwei Möglichkeiten:
Wandle die Daten in deinem Programm in UTF8/Unicode um.
Portiere die Datenbank auf Latin1 oder gleich auf UTF8.
Das Portieren auf Latin1 reicht, UTF8 wäre natürlich zukunftssicher. Wenn die Datenbank Latin1 ist, setzt du das client_encoding auf “utf8” und die Datenbank wandelt das richtig für dich um.
Zusammengefasst: mit SQL_ASCII kommst du nicht weit.