Seite 1 von 1
cx_Oracle und deutsche Umlaute
Verfasst: Sonntag 19. März 2023, 11:22
von drnicolas
Code: Alles auswählen
import cx_Oracle
import config
import os
os.environ['NLS_LANG'] ='GERMAN_GERMANY.WE8ISO8859P1'
connection = None
cx_Oracle.init_oracle_client(lib_dir='/opt/oracle/instantclient_21_9')
try:
connection = cx_Oracle.connect(
config.username,
config.password,
config.dsn,
encoding=config.encoding)
# show the version of the Oracle Database
print(connection.version)
Mit diesem Code greife ich auf eine Oracle DB zu.
SELECT frunktioniert an sich, aber die deutschen Umlaute in Namen sind verkorkst.
encoding ist momentan UTF-8.
Ich finde leider keine Tabelle für den encoding Paramter wie cih damit auf die deutschen Umlaute komme.
Kann mir jemand helfen?
Das Ganze soll unter LINUX/Debian stattfinden
Re: cx_Oracle und deutsche Umlaute
Verfasst: Sonntag 19. März 2023, 11:38
von sparrow
Ich nehme an, das Encoding sollte das Encoding der Datenbank sein.
Re: cx_Oracle und deutsche Umlaute
Verfasst: Sonntag 19. März 2023, 11:39
von Sirius3
Es macht eigentlich keinen Sinn, irgendetwas anderes als UTF8 zu benutzen:
@sparrow: nein, die Datenbank konvertiert automatisch von ihrer internen Repräsentation zum Client-Encoding.
Re: cx_Oracle und deutsche Umlaute
Verfasst: Dienstag 21. März 2023, 13:44
von drnicolas
Ich habe jetzt mal die Datenbank selber abgefragt:
Ich bekomme W8MSWIN1252
Ich habe inzwischen wild alle möglichen Einstellungen für encoding probiert: Es kommt immer Blödsinn, aber durchaus unterschiedlicher Blödsinn
Re: cx_Oracle und deutsche Umlaute
Verfasst: Dienstag 21. März 2023, 13:44
von drnicolas
Updated: Interessanterweise kommen die Umlaute selbst in SQL Developer falsch wenn ich die Tabelle direkt anschaue
Re: cx_Oracle und deutsche Umlaute
Verfasst: Dienstag 21. März 2023, 14:43
von Sirius3
Dann kann es ja sein, dass bereits beim Schreiben Blödsinn in die Datenbank geschrieben worden ist.
In den Oracle-Tabellen sollte man nur Unicode-Zeichensätze verwenden. Und für den Client sollte man auch immer UTF8 angeben.
Also am besten die Datenbank neu aufsetzen und von vornherein richtig befüllen.
Re: cx_Oracle und deutsche Umlaute
Verfasst: Mittwoch 22. März 2023, 10:15
von drnicolas
Die DB ist von einem Drittanbieter und mit den zugehörigen Clients kommen die Umlaute auch richtig raus. Dort sind die Umlaute mit Sicherheit richtig.
Mit UTF-8 encoding hat es nicht funktioniert
Re: cx_Oracle und deutsche Umlaute
Verfasst: Mittwoch 22. März 2023, 10:31
von Sirius3
Nagut, wenn der Drittanbieter falsche Zeichen in die Datenbank schreibt, und die dann selbst wieder beim Lesen falsch interpretiert, dann liegt die Schuld eindeutig bei diesem Drittanbieter.
Kannst Du mal ein paar falsche Umlaute hier posten?
Re: cx_Oracle und deutsche Umlaute
Verfasst: Sonntag 2. April 2023, 15:13
von drnicolas
Glaube ich eher nicht.
In der zugehörigen Front-end-Software passt es ja.
Ich denke, das Problem liegt auf meiner Seite.
Re: cx_Oracle und deutsche Umlaute
Verfasst: Sonntag 2. April 2023, 15:31
von __blackjack__
@drnicolas: Naja, wenn die das konsequent falsch macht, dann passt das dort ja. Das kann trotzdem falsch in der DB stehen.