Hallo,
Ich versuche eine Textdatei aus meinem Webspace mit HttpClient in eine Multiline Textbox einzulesen. Nun werden sowohl der Zeilenumbruch und die Umlaute nicht richtig gelesen.
Den Zeilenumbruch \n kann ich mit einem Regex in \r\n umwandeln. Aber für die Umlaute finde ich keine Lösung. Anstatt 'ä' wird ein char mit dem Wert 65533 ausgegeben.
Wenn ich die URL der Textdatei im Webbrowser eingebe, wird der Text dort richtig angezeigt.
Was mache ich falsch?
Danke und Gruss Patrick
// lokale Datei wird richtig angezeigt
private void button1_Click(object sender, EventArgs e)
{
string file = "D:\\Programmieren\\Test\\ReadMe.txt";
textBox1.Text = File.ReadAllText(file, System.Text.Encoding.Default);
}
// Probleme mit Zeilenumbruch und Umlaute
private void button2_Click(object sender, EventArgs e)
{
string link_ReadMe = "http://myServer.com/myUser/Project/ReadMe.txt";
HttpClient client = new HttpClient();
string result = client.GetStringAsync(link_ReadMe).Result;
result = Regex.Replace(result, "(?<!\r)\n", "\r\n");
textBox1.Text = result;
}
.Result ist so mit das Schlimmste, was man mit Tasks machen kann.
https://enterprisecraftsmanship.com/posts/pitfalls-of-async-await/
Warum verwendest Du kein async await?
Auch soll man den HttpClient nicht dauernd neu instanziieren, steht dick markiert in den Docs
HttpClient Klasse (System.Net.Http)
HTTP-Kommunikation verwendet i.d.R. UTF-8 Encoding.
Ergo musst Du auch damit arbeiten bzw. mit der Info, die Dir der Webserver (durch die Header) liefert.
Liste der HTTP-Headerfelder
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Das ist nur ein erstes Testprogramm, um einen Codeschnippel auszuprobieren.
Hindert einen ja nich, das trotzdem richtig zu machen.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code