Konvertieren Sie eine Unicode-Zeichenfolge in eine Escape-ASCII-Zeichenfolge
Wie kann ich konvertieren Sie diese Zeichenfolge:
This string contains the Unicode character Pi(π)
in eine ASCII-Escape-string:
This string contains the Unicode character Pi(\u03a0)
und Umgekehrt?
Die aktuelle Codierung in C# verfügbar wandelt das π-Zeichen "?". Ich brauche für die Bewahrung der Zeichen.
InformationsquelleAutor der Frage Ali | 2009-10-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser geht hin und her zu und von den \uXXXX-format.
Ausgänge:
Diese Funktion beinhaltet ein unicode-Zeichen pi (π)
Diese Funktion beinhaltet ein unicode-Zeichen pi (\u03a0)
Diese Funktion beinhaltet ein unicode-Zeichen pi (π)
InformationsquelleAutor der Antwort Adam Sills
Für Unescape können Sie einfach verwenden Sie diese Funktionen:
Ich schlage vor, diese Methode zu verwenden (Es arbeitet besser mit UTF-8):
InformationsquelleAutor der Antwort MrRolling
InformationsquelleAutor der Antwort leppie
Als ein one-liner:
InformationsquelleAutor der Antwort Douglas
Alle nicht-ASCII-Zeichen sind in Ihren Unicode-Code-Point-Vertretung und an den endgültigen string zu.
InformationsquelleAutor der Antwort jdecuyper
Einen kleinen patch zu @Adam Schweller Antwort, die löst
FormatException
auf Fälle, in denen der input-string wie "c:\u00ab\otherdirectory\" plusRegexOptions.Compiled
macht dieRegex
Zusammenstellung viel schneller:InformationsquelleAutor der Antwort vovafeldman
Hier ist meine aktuelle Umsetzung:
Übergibt diesem einen test:
mit dem kodierten Wert:
"\ud840\udc00"
Diese Implementierung macht Gebrauch von einer StringBuilderCache (Referenz Quelle-link)
InformationsquelleAutor der Antwort Bill Barry
Müssen Sie die
Convert()
Methode in derEncoding
Klasse:Encoding
- Objekt repräsentiert die ASCII-KodierungEncoding
Objekt repräsentiert Unicode-CodierungEncoding.Convert()
mit Quell-Codierung, die das Ziel der Kodierung, und die Zeichenfolge codiert werdenEs ist ein Beispiel hier:
InformationsquelleAutor der Antwort JeffFerguson
Speichern eigentliche Unicode-codepoints, müssen Sie zuerst entschlüsseln Sie die Zeichenfolge im UTF-16 codeunits UTF-32 codeunits (das sind derzeit die gleichen wie die Unicode-codepoints). Verwenden
System.Text.Encoding.UTF32.GetBytes()
für Sie, und dann schreiben Sie das resultierende Byte nach derStringBuilder
wie nötig,d.h.InformationsquelleAutor der Antwort Remy Lebeau