Forum: PC-Programmierung c# streamwriter umlaute


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von grundschüler (Gast)


Bewertung
0 lesenswert
nicht lesenswert
hallo,

problem mit c#-streamwriter:

output_file.WriteLine(txt, Encoding.GetEncoding(850));

txt = "Summe  netto E19       0,00 €"

wird zu

Summe  netto E19       0,00 €

Wie bringe ich den streamwriter dazu, den deutschen Zeichensatz zu 
verwenden?

Danke für Unterstützung

von Jim M. (turboj)


Bewertung
0 lesenswert
nicht lesenswert
Windows Encoding != DOS Encoding.

Mit welchem Programm wird das .txt weiter verarbeitet? Bei notepad würde 
ich eher UTF-8 bentuzen (mit BOM).

von Yalu X. (yalu) (Moderator)


Bewertung
0 lesenswert
nicht lesenswert
Der Text liegt offensichtlich in UTF-8-Kodierung vor. Da CP850 kein '€'
enthält, werden die drei UTF-8-Bytes 0xE2, 0x82 und 0xAC vermutlich
einfach beibehalten.

Zur Anzeige der geschriebenen Datei verwendest du offensichtlich ein
Tool, das die Windows-1252-Kodierung verwendet. Dort entsprechen die
drei Bytes den Zeichen 'â', '‚' (einfaches Anführungszeichen) und '¬'.

Wahrscheinlich  werde ich es nicht mehr erleben, dass Microsoft diesen
endlosen Kauderwelsch von Zeichenkodierungen, die teilweise noch auf
MSDOS zurückgehen, bereinigt :)

von c-hater (Gast)


Bewertung
0 lesenswert
nicht lesenswert
grundschüler schrieb:

> output_file.WriteLine(txt, Encoding.GetEncoding(850));
>
> txt = "Summe  netto E19       0,00 €"
>
> wird zu
>
> Summe  netto E19       0,00 €
>
> Wie bringe ich den streamwriter dazu, den deutschen Zeichensatz zu
> verwenden?

Wenn dein Windows "europäische" Locales verwendet, dann einfach durch

output_file.WriteLine(txt, Encoding.Default);

wenn nicht, kannst du dasselbe durch

> output_file.WriteLine(txt, Encoding.GetEncoding(1252));

erreichen.

von grundschüler (Gast)


Bewertung
0 lesenswert
nicht lesenswert
das war schon mal alles hilfreich.

             var printProcess = new Process();
               printProcess.StartInfo.FileName = Path.Combine(docPath, "EA_" + listBox1.SelectedItem);
               printProcess.StartInfo.UseShellExecute = true;
               printProcess.StartInfo.Verb = "print";
               printProcess.Start();


Problem ist nicht das Erstellen der Datei sondern nur der Ausdruck der 
Datei!

im Editor wird alles richtig angezeigt. Gedruckt wird anscheinend mit 
Wordpad. Ändern in "Dateieigenschaften"/"öffnen mit" behebt das Problem.

danke

von nicht"Gast" (Gast)


Bewertung
0 lesenswert
nicht lesenswert
grundschüler schrieb:
> Gedruckt wird anscheinend mit Wordpad.

Wer macht denn so was? Drucken mit C# ist ja nun nicht so schwer.

von c-hater (Gast)


Bewertung
0 lesenswert
nicht lesenswert
nicht"Gast" schrieb:

> Wer macht denn so was?

Jemand, der keine Ahnung hat von dem, was er da tut. C&P-"Programmierer" 
halt...

> Drucken mit C# ist ja nun nicht so schwer.

Kommt drauf an, wie genau man druckt. Man kann es sich sehr einfach 
machen und ziemlich gräuliche Drucke erzielen oder man kann etwas mehr 
Code investieren und perfekte Drucke erhalten. Zumindest letzteres 
erfordert schon merklich umfangreicheren Code als ein Shell-Aufruf.

von grundschüler (Gast)


Bewertung
0 lesenswert
nicht lesenswert
nicht"Gast" schrieb:
> Wer macht denn so was? Drucken mit C# ist ja nun nicht so schwer.

c# druckt mit wordpad weil wordpad als standardprogramm  für 
*.txt-Dateien eingestellt war. Frag mich nicht warum.

von c-hater (Gast)


Bewertung
0 lesenswert
nicht lesenswert
grundschüler schrieb:

> c# druckt mit wordpad weil wordpad als standardprogramm  für
> *.txt-Dateien eingestellt war. Frag mich nicht warum.

OMG...

Mehr kann man zu diesem Statement wohl kaum sagen...

von h4x0r (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Das kommt davon, wenn man eine grottige Programmiersprache wie C# 
benutzt. Bei modernen fortschrittlichen Programmiersprachen hat man 
deutlich weniger Probleme mit UTF8.

von c-hater (Gast)


Bewertung
0 lesenswert
nicht lesenswert
h4x0r schrieb:
> Das kommt davon, wenn man eine grottige Programmiersprache wie C#
> benutzt. Bei modernen fortschrittlichen Programmiersprachen hat man
> deutlich weniger Probleme mit UTF8.

OMG...

Mehr kann man zu diesem Statement wohl kaum sagen...

von Donni D. (donnidonis)


Bewertung
0 lesenswert
nicht lesenswert
h4x0r schrieb:
> Das kommt davon, wenn man eine grottige Programmiersprache wie C#
> benutzt. Bei modernen fortschrittlichen Programmiersprachen hat man
> deutlich weniger Probleme mit UTF8.

Welche sollen das denn sein?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.