Laden...

Umlaute und ß sind falsche aus oracle db ausgelesen

Erstellt von entwicklersued vor 6 Jahren Letzter Beitrag vor 6 Jahren 2.334 Views
E
entwicklersued Themenstarter:in
2 Beiträge seit 2017
vor 6 Jahren
Umlaute und ß sind falsche aus oracle db ausgelesen

Hallo allerseits,

verwendetes Datenbanksystem: <oracle database 11g express edition>

ich setze System.Data.Odbc (Version 4.0.0.0) ein, um einfach ein String aus Tabelle auszulesen. Das String ist bspw. "äüßßß" in der Datenbank, die Ausgabe zeigt aber "au???" an. Meine Anwendung ist in VS2017 (Community) entwickelt, und das Betriebssystem Windows7 6.4 English. Nach Internet Posts habe ich NLS_LANG auch nls_session_parameters angepasst, allerdings ohne Erfolg.

Interessanterweise werden Umlaute und ß fehlerfrei ausgelesen, wenn System.Data.OracleClient (auch Version 4.0.0.0) verwendet ist.

Habt ihr solches Problem erlebt? Woran könnte es liegen?

Besten Denk im Voraus!

1.029 Beiträge seit 2010
vor 6 Jahren

Hi,

hast du schon

Unicode=true

im ConnectionString probiert?

LG

E
entwicklersued Themenstarter:in
2 Beiträge seit 2017
vor 6 Jahren

Danke für die schnelle Antwort!
Ja, habe ich Unicode=true probiert, aber vergebens. Es scheint mir, dass es an assembly System.Data.Odbc oder meiner Implementierung liegt.

          
            string queryString = "select * from mytable";
            OdbcCommand command = new OdbcCommand(queryString);

            string connectionString = "DSN=mydatasource;UID=myuid;PWD=mypw;Unicode=true";
            using (OdbcConnection connection = new OdbcConnection(connectionString))
            {
                command.Connection = connection;
                connection.Open();
                command.ExecuteNonQuery();
                var reader = command.ExecuteReader();
                int subId = reader.GetOrdinal("title");
                while (reader.Read())
                {
                    string resul = reader.GetString(subId);
                    Console.WriteLine("Subject={0}", reader.GetString(subId));
                }
            }

16.835 Beiträge seit 2008
vor 6 Jahren

Du solltest bei Oracle den ODP.NET Provider verwenden und nicht Odbc.
PS: man kann im ConnectionString CharSet=utf8 übergeben.