Forum: PC-Programmierung c# Sonderzeichen im File falsch


von Michael (Gast)


Lesenswert?

Hallo,

ich möchte ein Gradzeichen in ein File schreiben, jedoch wird immer ein 
falsches Zeichen davor geschrieben.
1
StreamWriter myFile = new StreamWriter("test.txt");
2
                myFile.WriteLine("180º");
3
                myFile.Close();

habt ihr mir einen Tip?
Im Hex Editor sieht es so aus.

313830C2BA0D0A    180°

Gruß Michael

von g457 (Gast)


Lesenswert?

Charset spezifizieren! Ob/Wie der Streamwriter das macht (oder ob man da 
tiefer im System graben muss) und wie man den Compiler (bzw. die IDE) 
einstellen muss steht in der Doku.

HTH

von Guest (Gast)


Lesenswert?

http://msdn.microsoft.com/de-de/library/f5f5x7kt%28v=VS.80%29.aspx

public StreamWriter (
  string path,
  bool append,
  Encoding encoding
)

-> new StreamWritert("test.txt", false, Encoding.Unicode)

Encoding.ASCII
Encoding.Unicode
...

von Markus V. (Gast)


Lesenswert?

Hi Michael,

mit Deiner Datei ist alles in bester Ordnung. Das verwendete Encoding 
ist UTF-8. Dabei belegen die Zeichen 0 bis 127 1 Byte, alle anderen 
Zeichen 2 Bytes. Das Zeichen "°" liegt nicht im Bereich 0 .. 127 und 
wird folgerichtig mit 2 Bytes in die Datei geschrieben.

Wenn Du mal in die Doku StreamWriter.StreamWriter(String) Constructor 
schaust, steht dort übrigens groß und breit "This constructor creates a 
StreamWriter with UTF-8 encoding whose GetPreamble method returns an 
empty byte array." ;-)

Ach ja, die Doku findest Du u.a. dort: 
http://msdn.microsoft.com/en-us/library/aa328967%28VS.71%29.aspx

Gruß
Markus

von Michael (Gast)


Lesenswert?

besten Dank an Euch, hat mir sehr geholfen.

Michael

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.