Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
URI zu lokaler Pfad: Umlaute decodieren
geexcel
myCSharp.de - Member



Dabei seit:
Beiträge: 14
Herkunft: Bayern

Themenstarter:

URI zu lokaler Pfad: Umlaute decodieren

beantworten | zitieren | melden

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"
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16112

beantworten | zitieren | melden

Das Ergebnis ist so auch korrekt. Umlaute in URIs werden genau so umgewandelt.
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
Coffeebean
myCSharp.de - Team

Avatar #avatar-3295.gif


Dabei seit:
Beiträge: 2461
Herkunft: Deutschland/Schweiz

beantworten | zitieren | melden

Hallo geexcel,

ich glaube du suchst so etwas:
HttpUtility-Methoden

speziell die HTML-Decode und Encode-Sachen.

Gruss

Coffeebean
private Nachricht | Beiträge des Benutzers
geexcel
myCSharp.de - Member



Dabei seit:
Beiträge: 14
Herkunft: Bayern

Themenstarter:

beantworten | zitieren | melden

auch wenn's korrekt ist, wie bekomme ich trotzdem mein "ä" statt "%E4"
mit HttpUtility.HtmlDecode bin ich leider nicht weitergekommen
private Nachricht | Beiträge des Benutzers
mabo
myCSharp.de - Member



Dabei seit:
Beiträge: 335

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16112

beantworten | zitieren | melden

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 - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
vbprogger
myCSharp.de - Experte

Avatar #avatar-1820.gif


Dabei seit:
Beiträge: 1723
Herkunft: NRW/DE

beantworten | zitieren | melden

Zitat von mabo
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.

Don't use .NET System.Uri.UnescapeDataString in URL Decoding
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von vbprogger am .
Ich bin verantwortlich für das, was ich sage, nicht für das, was du verstehst.
---------
Bemerkung: ich beantworte keine Fragen via PM, denn das Forum soll ja was davon haben!
private Nachricht | Beiträge des Benutzers
geexcel
myCSharp.de - Member



Dabei seit:
Beiträge: 14
Herkunft: Bayern

Themenstarter:

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
Coffeebean
myCSharp.de - Team

Avatar #avatar-3295.gif


Dabei seit:
Beiträge: 2461
Herkunft: Deutschland/Schweiz

beantworten | zitieren | melden

Hallo geexcel,

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

Gruss

Coffeebean
private Nachricht | Beiträge des Benutzers
geexcel
myCSharp.de - Member



Dabei seit:
Beiträge: 14
Herkunft: Bayern

Themenstarter:

beantworten | zitieren | melden

Danke an Alle,

ich hab's jetzt mit Replace gelöst, alles Andere brachte mich nicht zum gewünschten Ergebnis
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16112

beantworten | zitieren | melden

Wieso arbeitest Du bei dem lokalen Pfad überhaupt via URI? Wo ist der Sinn?
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
geexcel
myCSharp.de - Member



Dabei seit:
Beiträge: 14
Herkunft: Bayern

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers