Hallo,
ich versuche gerade mit folgendem Code eine URI in einen lokalen Pfad umzuwandeln, die Leerzeichen werden sauber umgewandelt, nur die Umlaute nicht
was mache ich falsch?
string eingang = "file:///V:/Kalkulation/Projekte%20neu/Hausauftr%E4ge";
Uri uriAddress2 = new Uri(eingang);
MessageBox.Show(uriAddress2.LocalPath);
Das Ergebnis ist
"V:\Kalkulation\Projekte neu\Hausauftr%E4ge"
Das Ergebnis ist so auch korrekt. Umlaute in URIs werden genau so umgewandelt.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hallo geexcel,
ich glaube du suchst so etwas:
HttpUtility-Methoden
speziell die HTML-Decode und Encode-Sachen.
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
auch wenn's korrekt ist, wie bekomme ich trotzdem mein "ä" statt "%E4"
mit HttpUtility.HtmlDecode bin ich leider nicht weitergekommen
Für Pfade sollte man besser Uri.EscapeDataString verwenden. Das arbeitet im Gegensatz zu den HttpUtility-Methoden nach der RFC 2396.
Ich finde allerdings grade die Quelle dafür nicht mehr, wo genau die Unterschiede sind. Ich weißt nur, dass wir mit den HttpUtilitiy-Methoden Probleme hatten.
Ein Uri hat keine Umlaute.
Wenn Du es wieder drin haben willst dann musst Du das selbst via String Replace zusammen schustern.
HttpUtility.UrlDecode() sollte aber funktionieren;HtmlDecode ist genauso eine Sackgasse wie EscapeDataString
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Für Pfade sollte man besser
> verwenden. Das arbeitet im Gegensatz zu den HttpUtility-Methoden nach der RFC 2396.Ich finde allerdings grade die Quelle dafür nicht mehr, wo genau die Unterschiede sind. Ich weißt nur, dass wir mit den HttpUtilitiy-Methoden Probleme hatten.
Don't use .NET System.Uri.UnescapeDataString in URL Decoding
**:::
mit UrlDecode() bekomme ich jetzt statt "%E4" eine kleine schwarze Raute mit einem ? drin. Ok, Replace funktioniert natürlich, wäre aber meine letzte Option.
Hallo geexcel,
nur geraten: Hast mal mit dem FormatProvider gespielt? InvariantCulture und sowas.
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
Danke an Alle,
ich hab's jetzt mit Replace gelöst, alles Andere brachte mich nicht zum gewünschten Ergebnis
Wieso arbeitest Du bei dem lokalen Pfad überhaupt via URI? Wo ist der Sinn?
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
ich will die Pfade aller offenen Explorer-Fenster ermitteln,
das mach ich mit
using SHDocVw;
IShellWindows windows = new ShellWindowsClass();
foreach (IWebBrowser2 window in windows)
{
string wahl = window.LocationURL;
string wahl1 = new Uri(wahl).LocalPath;
}
dabei kommen dann URI's raus