Npgsql 2.0.9 Encoding

Hallo,

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.


Danke voraus,


Igor

Versuch mal:

SET client_encoding = 'latin1';

als SQL-Befehl abzusetzen.

Aber keine Ahnung, ob der Treiber das nicht abfängt.

Hallo,

leider hat den SQL Befehl nicht geholfen. Es hilft auch nicht, wenn ich den Wert direkt in der postgressql.conf Datei setze.

Grüße,

Igor

Ok, wie genau äußert sich denn das Problem?

Hallo,

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

Grüße,

Igor

Kannst Du mit psql und passenden client_encoding die Daten korrekt sehen?

Andreas

Hallo Andreas,

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.

Grüße,

Igor

Ä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:

  1. Wandle die Daten in deinem Programm in UTF8/Unicode um.

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