Der ursprüngliche Vorschlag 01.239.235 zu verwenden war
link
URL-Kodierung ersetzt Zeichen, die hexadezimalen Escape-Sequenzen, die aus in einer URL mit Äquivalente zeichen Entität nicht erlaubt.
Dies würde für doppelte Anführungszeichen gut funktionieren, aber wenn Leerzeichen im Text, die auf „+“
Für zB umgewandelt werden würde, wenn die Zeichenfolge:
this is for "testing"
Mit UrlEncode
, wäre es zu umgewandelt werden:
this+is+for+%22testing%22
Das obige sieht nicht gut aus.
Eine bessere Lösung ist also, Doppelzitat manuell durch% 22 zu ersetzen.
var changedText = body.Replace("\"", "%22");
Dies würde die Ausgabe als geben:
Die vollständige Liste der Ersatzzeichenfolgen für die "mailto" Handler für Outlook ist verfügbar here:
Die folgenden Variablen werden verwendet, um häufig verwendete Zeichen darzustellen:
Fläche()% 20
Komma (,)% 2C
Fragezeichen (?)% 3F
Punkt (.)% 2E
Ausrufezeichen (!)% 21
Colon (:)% 3A
Semikolon (;)% 3B
Die MSDN-Seite für mailto handler hat diese zusätzlichen Details:
Windows Internet Explorer 7 und später. Sie müssen alle URL-reservierten Zeichen in einer mailto: -Adresse in Prozent codieren. Beispielsweise wird das Nummernzeichen (#) als Fragmentkennung in URLs verwendet. Bei der Verarbeitung einer Adresse wie zum Beispiel some #[email protected] kopiert Internet Explorer nur den Teil bis zum Nummernzeichen in den Mail-Client. der Fragmentteil einschließlich des Nummernzeichens wird ignoriert. Dieses Verhalten ist von Entwurf.
Weitere Informationen zum mailto-Protokoll finden Sie unter RFC2368: Das mailto-URL-Schema.
Nach einigen weiteren Tests und googeln um, so scheint es, dass es eine einfachere solution ist - Uri.EscapeDataString
Diese handles alle notwendigen Konvertierungen verwenden.
Danke, es funktioniert jetzt. –