| 

.NET C# Java Javascript Exception

0
Hallo

Ich habe das Problem, dass bei mir eine Exportdatei so umgestellt wurde, dass die Umlaute nicht "richtig" in der Datei sind. Eine Zeile in der Datei sieht so aus.
103129,Acampora,Immacolata,Gnter H”ller
Sie müsste aber so aussehen.
103129,Acampora,Immacolata,Günter Höller
Der Exportör kann oder will das nicht mehr ändern. Früher kam es mal mit Umlauten. Jetzt müsste ich das beim Import machen. Aber ich kriege das einfach nicht auf die Reihe. Habe schon einiges an Konvertierungen probiert.

Wenn die Datei mit Notepad geöffnet wird, zeigt es bei Speichern unter, ganz unten, ANSI als Codierung an.

Wie muss ich die Zeile mit C# konvertieren damit ich die Umlaute richtig habe? SAP könne das angeblich. Peinlich für mich. :-)

Hier noch ein wenig Sourcecode wie ich es zur Zeit importiere.

using (StreamReader sr = new StreamReader(file, Encoding.ASCII))
{
//Erste Zeile ist die Headerbeschreibung. Ignorirern.
string row = sr.ReadLine();

while (sr.Peek() >= 0)
{
row = sr.ReadLine();


Wie muss ich nun sr.ReadLine(); konvertieren damit die Umlaute in row richtig angezeigt werden?
News:
08.09.2009
GENiALi 2,5k 1 2 8
1
Bevor wir da irgendetwas vorschlagen können, musst Du zuerst einmal rausfinden und posten, welche *Bytes* in der Datei stehen. D.h. einen Hex Dump machen oder mit einem Hex Editor anschauen.
pjacobi 08.09.2009
Wie sieht denn die Bytefolge für die Umlaute aus? Und mit welchem Programm stellst du die Datei dar, bzw. in welchem Format ist sie?
Tomalak 08.09.2009
103129,Acampora,Immacolata,Gnter H”ller

3130333132392C4163616D706F72612C496D6D61636F6C6174612C47816E7465722048946C6C6572
GENiALi 08.09.2009
4 Antworten
7
Das ist Codepage 437.

Encoding.GetEncoding(437) dürfte es bringen.

Warum es jemals mit ASCII funktioniert hat, erschließt sich mir nicht. ASCII sollte bei allen Bytes >0x7F eine Exception auslösen (oder sie verschlucken, oder in das Ersatzzeichen umwandeln).
08.09.2009
pjacobi 1,1k 2 7
using (StreamReader sr = new StreamReader(file, Encoding.GetEncoding(437)))

Super. So habe ich die Umlaute. DANKE ..... :-D
GENiALi 08.09.2009
2
Ich finds immer wieder schön, daß man sich im Jahre 2009 immer noch mit dem Ascii-Kram rumärgern muß. Hatte ich letztens auch wieder, bis ich rausfand, daß ich eben auch so eine Plain-Ascii-Quelldatei vor mir hatte und alles Konvertieren in die Zieldatei noch mehr kaputt machte. Ascii / Codepages gehören eigentlich verboten. Von daher find ich den Vorschlag
ASCII sollte bei allen Bytes >0x7F eine Exception auslösen
super *thumbs up*
08.09.2009
Heinrich 113 1 4
0
Sieht die Datenquelle wirklich so aus?
103129,Acampora,Immacolata,Gnter H”ller
Ist sie wirklich ASCII enkodiert?

Teste mal mit was anderem als dem Nodepad, z.B. mit Notepad++ und schau mal hier ob das in Deinen Daten richtig ist: Byte Order Mark.

Wenn Die Datei wirklich ASCII ist und so aussieht wie oben angegeben, dann bist Du am Ende, weil Zeichen beim Export verloren gegangen sind und weg ist nunmal auch heute noch meistens weg ;)

Kleiner Test wäre auch noch:
using (StreamReader sr = new StreamReader(file, Encoding.UTF8))
08.09.2009
DaSpors 4,2k 2 8
Diesen kleinen Test habe ich schon versucht. Ich habe eigentlich alle Ecodings durch probiert.
GENiALi 08.09.2009
Notepad++ sagt unter Format das es ANSI sei. Wenn ich es dort auf UTF8 umstelle werden mir die Umlaute mit einer Zahl ersetzt. ä=84, ü=81 und ö=94.
GENiALi 08.09.2009
0
Eventuell in UTF-8 / Unicode konvertieren

Beim einlesen schon mit
using (StreamReader sr = new StreamReader(file, Encoding.UTF8))

oder
using (StreamReader sr = new StreamReader(file, Encoding.Unicode))



habs in C# nicht so auf dem Zettel in anderen Sprachen hilft das aber weiter.
08.09.2009
MiW 1,0k 1 8
Auch schon alle probiert. :-(
GENiALi 08.09.2009

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH