Laden...

URI zu lokaler Pfad: Umlaute decodieren

Erstellt von geexcel vor 9 Jahren Letzter Beitrag vor 9 Jahren 6.203 Views
G
geexcel Themenstarter:in
14 Beiträge seit 2013
vor 9 Jahren
URI zu lokaler Pfad: Umlaute decodieren

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"

16.806 Beiträge seit 2008
vor 9 Jahren

Das Ergebnis ist so auch korrekt. Umlaute in URIs werden genau so umgewandelt.

2.207 Beiträge seit 2011
vor 9 Jahren

Hallo geexcel,

ich glaube du suchst so etwas:
HttpUtility-Methoden

speziell die HTML-Decode und Encode-Sachen.

Gruss

Coffeebean

G
geexcel Themenstarter:in
14 Beiträge seit 2013
vor 9 Jahren

auch wenn's korrekt ist, wie bekomme ich trotzdem mein "ä" statt "%E4"
mit HttpUtility.HtmlDecode bin ich leider nicht weitergekommen

M
334 Beiträge seit 2007
vor 9 Jahren

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.

16.806 Beiträge seit 2008
vor 9 Jahren

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

1.696 Beiträge seit 2006
vor 9 Jahren

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

Ich bin verantwortlich für das, was ich sage, nicht für das, was du verstehst.

**:::

G
geexcel Themenstarter:in
14 Beiträge seit 2013
vor 9 Jahren

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.

2.207 Beiträge seit 2011
vor 9 Jahren

Hallo geexcel,

nur geraten: Hast mal mit dem FormatProvider gespielt? InvariantCulture und sowas.

Gruss

Coffeebean

G
geexcel Themenstarter:in
14 Beiträge seit 2013
vor 9 Jahren

Danke an Alle,

ich hab's jetzt mit Replace gelöst, alles Andere brachte mich nicht zum gewünschten Ergebnis

16.806 Beiträge seit 2008
vor 9 Jahren

Wieso arbeitest Du bei dem lokalen Pfad überhaupt via URI? Wo ist der Sinn?

G
geexcel Themenstarter:in
14 Beiträge seit 2013
vor 9 Jahren

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