Ich baue eine Windows Store-App, aber ich bin dabei, eine UTF-8-Antwort von einer API zu bekommen.
Dies ist der Code:
%Vor% Das reponseString
enthält immer seltsame Zeichen, die Akzente wie é haben sollten, und ich habe versucht, einen Stream zu verwenden, aber die API, die ich in einigen Beispielen gefunden habe, existiert nicht in Windows RT.
edit: verbesserter Code, immer noch dasselbe Problem
Anstatt response.Content.ReadAsStringAsync()
direkt zu verwenden, können Sie response.Content.ReadAsBufferAsync()
, auf das @Kiewic zeigt, wie folgt verwenden:
Dies funktioniert in meinem Fall und ich denke, dass UTF8 die meisten Probleme lösen sollte. Nun gehe zur Zahl, warum es keine Möglichkeit gibt dies mit ReadAsStringAsync
zu tun:)
Ich kann noch nichts sagen, also muss ich hier meine Gedanken hinzufügen.
Sie könnten versuchen, _client.GetStringAsync(url)
als Vorschlag für @cremor zu verwenden und Ihre Authentifizierungsheader mit der Eigenschaft _client.DefaultRequestHeaders
festzulegen.
Alternativ könnten Sie auch versuchen, die Methode ReadAsByteArrayAsync
für das Objekt response.Content
zu verwenden und System.Text.Encoding
zu verwenden, um dieses Bytearray in eine UTF-8-Zeichenfolge zu dekodieren.
Vielleicht ist das Problem, dass die Antwort gezippt ist. Wenn der Inhaltstyp gzip ist, müssen Sie die Antwort in einer Zeichenfolge dekomprimieren. Einige Server tun dies, um Bandbreite zu sparen, die normalerweise gut ist. In .NET Core und wahrscheinlich .NET Framework wird die Antwort automatisch entpackt. Aber das funktioniert nicht in UWP. Das scheint mir ein eklatanter Fehler in UWP zu sein.
%Vor%Dieser Thread zeigt ein klares Beispiel für das Dekomprimieren der Antwort:
Tags und Links .net c# character-encoding utf-8 windows-runtime