Was ist Los mit diesem byte-array?
Ich habe ein byte-array:
00 01 00 00 00 12 81 00 00 01 00 C8 00 00 00 00 00 08 5C 9F 4F A5 09 45 D4 CE
Lesen über StreamReader
mit UTF8 encoding
//Note I can't change this code, to many component dependent on it.
using (StreamReader streamReader =
new StreamReader(responseStream, Encoding.UTF8, false))
{
string streamData = streamReader.ReadToEnd();
if (requestData.Callback != null)
{
requestData.Callback(response, streamData);
}
}
Wenn die Funktion läuft, bekomme ich die folgenden wieder zu mir (ich konvertiert ein byte-array)
00 01 00 00 00 12 EF BF BD 00 00 01 00 EF BF BD 00 00 00 00 00 08 5C EF BF BD 4F EF BF BD 09 45 EF BF BD
Irgendwie muss ich nehmen, was wieder zu mir, und bekommen es wieder auf die richtige Codierung und die richtige byte-array, aber ich habe versucht viel.
Bitte beachten, ich arbeite mit WP7 eingeschränkte API.
Hoffentlich Euch helfen können.
Dank!
Update für die Hilfe...
wenn ich den folgenden code, es ist fast richtig, nur was falsch ist, ist der 5. zum letzten byte wird aufgeteilt.
byte[] writeBuf1 = System.Text.Encoding.UTF8.GetBytes(data);
string buf1string = System.Text.Encoding.BigEndianUnicode.GetString(writeBuf1, 0, writeBuf1.Length);
byte[] writeBuf = System.Text.Encoding.BigEndianUnicode.GetBytes(buf1string);
- Können Sie uns zeigen, den code zu schreiben/erstellen des Arrays?
- Nee, die kommen von einem Drittanbieter-Dienst, das ist genau die Daten, die der service gibt... Außerdem, ich will einfach nur, um es zurück zu dem, was es sein soll (so steht es in der Antwort-stream)
- Ich bin ernsthaft geblöfft auf diese...
- Wie können Sie dann wissen, in welcher Codierung und-byte-Reihenfolge den stream geschrieben wird?
- Können Sie schließen Sie ein Netzwerk-sniffer (Fiddler), um zu sehen, was wird tatsächlich übertragen?
- Bitte beachten Sie das array geändert, aber hier ist ein screenshot von fiddler ' hex imageshack.us/photo/my-images/818/returnz.png
- stackoverflow.com/questions/25222973/weird-characters-in-url
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den original-byte-array ist nicht als UTF-8 kodiert. Der StreamReader ersetzt somit jede ungültige byte mit dem Ersatz Zeichen U+FFFD. Wenn dieses Zeichen wird codiert, wieder auf UTF-8, dies ergibt die byte-Reihenfolge
EF BF BD
. Sie nicht erstellen Sie den original-byte-Wert aus dem string, da die Informationen völlig verloren.ISO-8859-1
, so erhalten Sie eine einfache 1:1-Zuordnung von Byte zu Zeichen. Nur aus Neugier: Warum würde jemand wollen, Lesen Sie ein byte-stream, wie dieses (was offensichtlich nicht-Zeichen-Datentypen) als character-stream?