C# UTF8-Dekodierung, Rückkehr bytes/zahlen anstelle von string
Ich habe ein Problem entschlüsseln einer Datei mit einem UTF8Encoder.
Bin ich das Lesen von text aus einer Datei, die ich habe, codiert in UTF8 (String > Byte)
Sehen Sie die folgende Methode.
public static void Encode(string Path)
{
string text;
Byte[] bytes;
using (StreamReader sr = new StreamReader(Path))
{
text = sr.ReadToEnd();
UTF8Encoding Encoding = new UTF8Encoding();
bytes = Encoding.GetBytes(text);
sr.Close();
}
using (StreamWriter sw = new StreamWriter(Path))
{
foreach (byte b in bytes)
sw.Write(b.ToString());
sw.Close();
}
}
Ich dann decodieren Sie mit Hilfe der Methode
public static String Decode(string Path)
{
String text;
Byte[] bytes;
using (StreamReader sr = new StreamReader(Path))
{
text = sr.ReadToEnd();
UTF8Encoding Encoding = new UTF8Encoding();
bytes = Encoding.GetBytes(text);
text = Encoding.GetString(bytes);
return text;
}
}
Sondern von der Entschlüsselung des byte haben, kommen Sie zurück zum text, es gibt einfach zurück, es als eine Zeichenfolge von zahlen. Ich kann nicht sehen, was ich falsch mache, da ich nicht wirklich viel Erfahrung habe mit diesem ein.
EDIT: um Zu verdeutlichen, was ich versuche zu erreichen. Ich versuche eine text-Datei, speichern Sie den text als Byte, sondern als Zeichen/zahlen. Dies ist eine sehr einfache Verschlüsselung, um die Dateien, so dass Sie nicht ändern können, es sei denn, Sie wissen, was Sie tun. Die Decode-Funktion wird dann verwendet, um den text zu Lesen (bytes) aus einer Datei und machen Sie in lesbaren text. Ich hoffe, dass dies geklärt, was ich versuche zu erreichen.
PS: Sry für keine Kommentare, aber ich denke, es ist kurz genug, um verständlich
Ich finde die Verwendung der variable name
Encoding
sehr verwirrend (und nicht standard) - normale C# Namenskonventionen sind, um es als encoding
.Tut es nicht, Sie zu schlagen, dass etwas ist falsch, wenn Sie mit dem gleichen Aufruf der Funktion (
Encoding.GetBytes()
) sowohl in der Kodierung und Dekodierung-Seite der Dinge?Aktualisierte OP um zu verdeutlichen, was ich versuche zu erreichen, auch sortiert die Variablen-Namen, ich habe keine Ahnung, warum ich Sie mit Großbuchstaben.
InformationsquelleAutor PeppeJ | 2012-09-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was genau wollen Sie erreichen? UTF-8 (und alle anderen
Encoding
s) ist eine Methode zum konvertieren von strings in byte-arrays (text-to raw data) und Umgekehrt.StreamReader
undStreamWriter
Lesen/schreiben strings von/auf Dateien. Keine Notwendigkeit, neu zu Kodieren von allem was dabei. Nur mitreader.ReadToEnd()
zurückkehren wird der korrekte string.Dein Stück code, das scheint der Versuch zu schreiben eine Datei, die eine Liste von zahlen (als lesbare, textuelle Darstellung) entsprechend UTF-8-bytes von dem angegebenen text. OK. Obwohl diese sehr seltsame Idee (ich hoffe, Sie versuchen nicht, irgendetwas zu tun, wie "Verschlüsselung".), dies ist definitiv möglich, wenn das wirklich das, was Sie tun möchten. Aber Sie müssen trennen die lesbaren zahlen irgendwie, z.B. durch Zeilenumbrüche, und analysieren Sie diese, wenn Sie zu Lesen zurück:
InformationsquelleAutor Mormegil
Dieser code wird decodiert verschlüsselte Zeichenfolge text, es funktionierte auf meiner Seite.
InformationsquelleAutor AqEeL BaLoCh
Den
StreamReader
Klasse behandeln Decodierung für Sie, so dass IhreDecode()
Methode kann so einfach wie diese:Ich bin mir nicht sicher, was Ihre
Encode()
Methode machen soll, da es die Absicht zu sein scheint, Lesen Sie eine Datei als UTF-8 und dann schreiben Sie den text wieder in die exakt gleiche Datei als UTF-8. Etwas wie das vielleicht mehr Sinn machen:InformationsquelleAutor BACON