konvertieren \u0040 zu @ in C#
Die Facebook graph API ' s für mich zurück des Benutzers E-Mail-Adresse als
foo\u0040bar.com
.
in ein JSON-Objekt. Muss ich es konvertieren zu
Muss es eine eingebaute Methode .NET, dass änderungen der Unicode-Zeichen-Ausdruck (\u1234) zu den eigentlichen unicode-symbol.
Weißt du, was es ist?
Hinweis: ich bevorzuge nicht zu verwenden JSON.NET oder JavaScriptSerializer für performance-Probleme.
Ich denke, das problem ist in meinen StreamReader:
requestUrl = "https://graph.facebook.com/me?access_token=" + accessToken;
request = WebRequest.Create(requestUrl) as HttpWebRequest;
try
{
using (HttpWebResponse response2 = request.GetResponse() as HttpWebResponse)
{
//Get the response stream
reader = new StreamReader(response2.GetResponseStream(),System.Text.Encoding.UTF8);
string json = reader.ReadToEnd();
Ich versucht, verschiedene Codierungen für das StreamReader -, UTF8, UTF7, Unicode, ... keiner war.
Vielen Dank!
Dank L. B, korrigiert mich. Das problem war nicht in den StreamReader.
- Sieht aus wie etwas schief ging beim Lesen/Dekodieren diese. Fixieren Sie es nach der Tat nicht so einfach.
- Die meisten nicht trivial - wie zu extrahieren
\u0040
symbol aus dem string - Rückblick auf es, es sieht aus wie ich brauchen, um dem StreamReader liest die JSON-die richtige Codierung
I prefer not to use JSON.NET or JavaScriptSerializer for performance issues
Wie viele Anfragen machen Sie auf facebook pro Sekunde? Wie viele CPU-Zyklen brauchen Sie mehr?- L. B denke ich und @Henk Holterman denkt auch, dass meine StreamReader ein Verschulden trifft. Also Leistung beiseite, geht zu anderen Bibliotheken wird das problem nicht lösen.
- Nein, ich sagte 'etwas'. Und dieses etwas ist wahrscheinlich nicht mit einem geeigneten deserializer lib.
- Ja, es wird lösen, siehe meine Antwort
Du musst angemeldet sein, um einen Kommentar abzugeben.
Json-Antworten sind nicht Binär-Daten zu konvertieren in eine Zeichenfolge mit einige Codierungen. Stattdessen werden die Zeichenfolgen korrekt decodiert die von Ihrem browser oder von
HttpWebResponse
wie in deinem Beispiel. Sie brauchen eine zweite die Verarbeitung auf es(regex, deserializers etc) den finalen Daten.Sehen, was Sie erhalten mit
webClient.DownloadString("https://graph.facebook.com/HavelVaclav?access_token=????")
ohne CodierungWürden Ihre Codierung ändern
\/
zu/
?So, das problem ist nicht in Ihrem
StreamReader
.Ja, es gibt einige built-in-Methode ist, aber das würde bedeuten, etwas wie mit einem compiler parse den string als code...
Verwenden ein einfaches ersetzen:
Für eine flexiblere Lösung, können Sie einen regulären Ausdruck verwenden, kann jedes unicode-Zeichen: