[C#/WinForms] euro teken verwijnt gewoon?

Pagina: 1
Acties:

  • stylee
  • Registratie: December 2000
  • Laatst online: 04-09-2021

stylee

blah zeg ik je

Topicstarter
Ik heb een html bestand dat een euro teken bevat (€). Ik lees dit bestand in middels een StreamReader, als volgt:

code:
1
2
StreamReader reader = new StreamReader ("file.htm"); 
string s = reader.ReadToEnd();


Als ik deze string nu weer wegschrijf naar een ander bestand middels de volgende code:

code:
1
2
StreamWriter writer = new StreamWriter ("file2.html");
writer.Write(s);


Dan verwijnt het euro teken compleet?! Ik heb het idee dat ik iets fout doe want het .NET framework heeft toch een vrij goede ondersteuning voor unicode ed...

Ik heb geprobeerd om tijdens het inlezen én wegschrijven expliciet UTF-8 encoding op te geven (source bestand is in UTF-8), maar dat werkt ook niet.

Ik heb ergens het idee dat ik één of andere Culture setting mis (ik heb geprobeerd de CurrentCulture en CurrentUICulture naar nl-NL te zetten alhowel dit niet nodig is aangezien mijn systeem deze instellingen al heeft).

Ik zou het bestand in kunnen lezen in een byte array en vervolgens weer wegschrijven maar dat heeft geen zin want mijn applicatie moet een aantal String.Replace() acties uitvoeren op de tekst.

Iemand enig idee wat ik fout doe of kan iemand me een betere manier aanwijzen om dit op te lossen?

Alvast bedankt.

  • stylee
  • Registratie: December 2000
  • Laatst online: 04-09-2021

stylee

blah zeg ik je

Topicstarter
Subtiel schopje. Heb het idee dat ik toch echt iets verkeerd doe aangezien niemand hier bekend schijnt te zijn met dit probleem? :)

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:33
Hoe heb je die encoding aangegeven?

https://fgheysels.github.io/


  • stylee
  • Registratie: December 2000
  • Laatst online: 04-09-2021

stylee

blah zeg ik je

Topicstarter
Op drie twee manieren geprobeerd,

Het ene is door het gebruik van
code:
1
StreamStreader sr = File.OpenText(inputfile)
die default UTF-8 encoding gebruikt en het tweede is door
code:
1
StreamReader sr = new StreamReader(inputfile, System.Text.Encoding.UTF8)
expliciet de UTF-8 encoding op te geven dus.

Het derde is door gewnn geen encoding op te geven.
code:
1
sr.CurrentEncoding.EncodingName
geeft dan aan dat het een UTF-8 bestand is.

[ Voor 21% gewijzigd door stylee op 02-11-2004 11:53 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:33
Probeer het eens met System.Text.Encoding.Default

https://fgheysels.github.io/


  • stylee
  • Registratie: December 2000
  • Laatst online: 04-09-2021

stylee

blah zeg ik je

Topicstarter
Ok dat werkt dus :-S

Nu even proberen te bevatten hoor... :)

Als ik geen encoding opgeef, dan is dat toch exact hetzelfde als , System.Text.Encoding.Default ?

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:33
Volgens de documentatie van de constructor van de StreamWriter wel ja....

https://fgheysels.github.io/


  • stylee
  • Registratie: December 2000
  • Laatst online: 04-09-2021

stylee

blah zeg ik je

Topicstarter
Een vreemde zaak :-)

Bedankt!
Pagina: 1