Von 7 nach 8 bit konvertieren

J

JoergStueger

Aktives Mitglied
Thread Starter
Dabei seit
02.01.2005
Beiträge
100
Reaktionspunkte
0
Hallo zusammen!

Stehe heir vor einem gröberen Problem:

Ich krieg aus einer Orcle DB Textfiles in 7 bit exportiert. Daraus resultiert, dass Sonderzeichen (Umlaute, scharfes S) nicht korrekt angezeigt wird.
Mir ist klar, dass ich das ganze per search and replace ersetzen kann, wäre aber froh, wenns einen Konverter dafür geben würde.

Ist Euch in diese Richtung was bekannt?

LG
Joerg
 
Hallo Joerg,

abhänging vom verwendeten Zeichensatz in der Datebank, NLS_LANG vorher vorm Export korrekt setzen.

Viele Grüße
Michael
 
Hallo Michael!

Wie kann ich den verwendeten Zeichensatz herausfinden? Ist nicht "meine" Datenbank. Wie muss ich NLS_LANG verwenden?

Danke für die Hilfe

Joerg
 
Hallo,

in der Datenbank erfährst Du das mit
select * from nls_database_parameters;
select * from nls_instance_parameters;
select * from nls_session_parameters;
und dann auf Betriebssystem-Ebene
Unix: echo $NLS_LANG
Windows: Registry HKEY_LOCAL_MACHINE\Software\Oracle\HomeX

Hat der, dem die Datenbank gehört, keine Möglichkeit sich an Oracle-Support zu wenden?

Viele Grüße
Michael
 
Nein, ich will auch gar nicht das der sich darum kümmert, das endet wieder in sehr sehr hohen Wartungskosten :(
 
database

NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CHARACTERSET WE8ISO8859P15
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY $
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_RDBMS_VERSION 9.2.0.4.0

instance

NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_SORT
NLS_DATE_LANGUAGE
NLS_DATE_FORMAT
NLS_CURRENCY
NLS_NUMERIC_CHARACTERS
NLS_ISO_CURRENCY
NLS_CALENDAR
NLS_TIME_FORMAT
NLS_TIMESTAMP_FORMAT
NLS_TIME_TZ_FORMAT
NLS_TIMESTAMP_TZ_FORMAT
NLS_DUAL_CURRENCY
NLS_COMP
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE


session

NLS_LANGUAGE GERMAN
NLS_TERRITORY AUSTRIA
NLS_CURRENCY €
NLS_ISO_CURRENCY AUSTRIA
NLS_NUMERIC_CHARACTERS ,.
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-Mon-RRRR
NLS_DATE_LANGUAGE GERMAN
NLS_SORT GERMAN
NLS_TIME_FORMAT HH24:MI:SSXFF
NLS_TIMESTAMP_FORMAT DD.MM.RR HH24:MI:SSXFF
NLS_TIME_TZ_FORMAT HH24:MI:SSXFF TZR
NLS_TIMESTAMP_TZ_FORMAT DD.MM.RR HH24:MI:SSXFF TZR
NLS_DUAL_CURRENCY €
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE


betriebssystemebene krieg ich nix zurück ...
 
JoergStueger schrieb:
...
Ich krieg aus einer Orcle DB Textfiles in 7 bit exportiert. Daraus resultiert, dass Sonderzeichen (Umlaute, scharfes S) nicht korrekt angezeigt wird.
Mir ist klar, dass ich das ganze per search and replace ersetzen kann, wäre aber froh, wenns einen Konverter dafür geben würde.
...
Gibt es ein Muster, welches Zeichen wie dargestellt wird?
Möglicherweise kann man die Umwandlung mit einem perl Einzeiler durchführen.
Das Problem sehe ich hauptsächlich darin, herauszufinden, wie die 4 "fehlerhaften" Zeichen in der Datei abgespeichert sind.

Welche Ausgabe erhältst Du mit
file <dateiname>
?
 
Lebend_VTR.out: ASCII text

die Zeichen dies umzuwandeln gilt sind die hier:

{|}~

äöüß



[\]

ÄÖÜ


LG
Joerg Stueger
 
Probier mal folgendes:

iconv -f ASCII -t LATIN1 > outfile

Sie dann nach, wie die Zeichen in outfile aussehen.
file outfile
würde mich auch interessieren.

Ich hab das Kommando iconv erst entdeckt und weniger Erfahrung damit.
Nachdem aber nichts kaputtgehen kann, wäre es einen Versuch wert.

btw:
Womit öffnest Du eigentlich Deine exportierten Daten? Es kommt ja immer auch darauf an, wie das öffnende Programm die Zeichen interpretiert.

HTH
 
maceis schrieb:
Probier mal folgendes:

iconv -f ASCII -t LATIN1 > outfile

Da passiert gar nix ... Ich sollte wahrscheinlich dazu sagen, dass das Ding unter RedHat läuft!!!!! Sorry!!!!!

[root@vuxmuki stujor]# iconv -f ASCII -t LATIN1 > outfile


so bleibts stehen ...

LG
Joerg
 
Sorry, ich hab was vergessen:
iconv -f ASCII -t LATIN1 Lebend_VTR.out > outfile
*peinlich* :D
Woher soll iconv denn sonst wissen, welche Datei es konvertieren soll ;).
 
Hi,

dann solltest Du auf Linux-Ebene
$ export NLS_LANG=AMERICAN_AMERICA.WEISO8859P15
setzen und dann nochmal probieren.

Viele Grüße
Michael
 
Datei sieht unverändert aus!
 
mikne21 schrieb:
Hi,

dann solltest Du auf Linux-Ebene
$ export NLS_LANG=AMERICAN_AMERICA.WEISO8859P15
setzen und dann nochmal probieren.

Viele Grüße
Michael

Hi Michael!

Was passiert dabei genau?
Gilt das für alle Applicationen auch die drauf laufen?

LG
Joerg
 
Zurück
Oben Unten