Dit kadert uiteraard binnen een groot script, maar ik kan het gemakkelijk reproduceren.
Ik sla het volgende op als een tekstbestand in UTF8-formaat D:\test.txt. Echt UTF8 overigens - alle threads die ik over dit onderwerp vond op internet (stackoverflow staat er vol van) blijkt het issue te zijn dat de input niet UTF8 is. De input is hier echt wel UTF8.
In de PoSh-console doe ik een goeie oude TYPE D:\test.txt en ik krijg de identieke lijst terug.
Nu draai ik de volgende code (PoSh, al gebruik ik de C# lexer) er tegen:
Resultaat:
Ik heb geen idee waarom System.IO.StreamReader die karakters verkeerd leest. Als iemand ideeën heeft... Alvast bedankt!
Ik sla het volgende op als een tekstbestand in UTF8-formaat D:\test.txt. Echt UTF8 overigens - alle threads die ik over dit onderwerp vond op internet (stackoverflow staat er vol van) blijkt het issue te zijn dat de input niet UTF8 is. De input is hier echt wel UTF8.
code:
1
2
3
4
5
6
7
8
9
10
| start à ç ê © € é è $ stop |
In de PoSh-console doe ik een goeie oude TYPE D:\test.txt en ik krijg de identieke lijst terug.
Nu draai ik de volgende code (PoSh, al gebruik ik de C# lexer) er tegen:
C#:
1
2
3
4
5
6
7
| $InputFile = New-Object System.IO.StreamReader("D:\Test.txt", [Text.Encoding]::UTF8, $True) While(!$InputFile.EndOfStream) { $Line = $InputFile.ReadLine() $Line } $InputFile.Close() |
Resultaat:
code:
1
2
3
4
5
6
7
8
9
10
| start ? ? ? ? ? ? ? $ stop |
Ik heb geen idee waarom System.IO.StreamReader die karakters verkeerd leest. Als iemand ideeën heeft... Alvast bedankt!
[ Voor 3% gewijzigd door YellowOnline op 31-07-2013 14:30 ]
