Kann mir jemand sagen, wie man herausfindet, wie die Datei beschädigt wurde, ...
Ich kann nicht, aber vielleicht hast du Glück.
Bei einer verschlüsselten Konfiguration eines Rubik-Cubes ist es sehr einfach, eine Reihe von Bewegungen zu ermitteln, um ihn in den Ausgangszustand zu bringen. Es ist normalerweise unmöglich herauszufinden, mit welchen Zügen der verschlüsselte Zustand erreicht wurde - weil die Anzahl der möglichen Bewegungsabläufe enorm ist.
Dein Problem ist ähnlich. Zum Teil, weil Sie keine Hinweise auf Plattformen, Ländereinstellungen und Tools geben, die möglicherweise zum Erstellen dieser Textdatei verwendet wurden.
0x89 ist kein gültiges erstes Byte für eine 3-Byte-UTF8-Kodierung eines Zeichens. 0xDBAA ist arabisch leer. Welches ist natürlich unplausibel. Möglicherweise wurde UTF8 als 8-Bit-Codierung falsch interpretiert und dann als andere 8-Bit-Codierung gespeichert. Wenn sich die Datei in der Nähe von Japan befunden hat, könnten Sie Missbrauch von JIS, Shift-JIS und EUC in den Mix einbringen.
Es gibt vielleicht ein Dutzend plausible Unicode-Zeichen und wahrscheinlich eine größere Anzahl von plausiblen 8-Bit- und 16-Bit-Kodierungen. Das sind zu viele Permutationen, um es manuell zu versuchen. Wenn es wichtig genug wäre, würde ich vielleicht Code schreiben, um alle Permutationen des Startzeichens plus zwei Scramblings auszuprobieren und zu sehen, ob 0x89DBAA ankommt.
Statistisch gesehen würde ich davon ausgehen, dass das wahrscheinlichste Szenario etwas ist, aber nicht ganz anders als:
- Erstellen Sie eine UTF8-Textdatei ohne Stückliste (wie von Unicode-Konsortium empfohlen).
- Lesen Sie diese Datei mit MS-Windows Notepad in einem Gebietsschema "Windows-Latin-1". Notepad liest UTF8 falsch als CP-1252, zum Teil weil UTF-8 keine Byte-Order-Marke hat und viele Microsoft-Tools eine Byte-Order-Marke als Kodierungsindikator missbrauchen.
- Speichern Sie die Datei als "Unicode". Notepad verwendet die falsche Terminologie von Microsoft und übersetzt den CP-1252 in UTF-16-Little-Endian (mit BOM).
Aber das ist zu einfach (ich habe es nicht probiert).
Ich bin mir sicher, dass die Antwort im Nachhinein offensichtlich ist. Aber das ist jetzt ein kleiner Trost.
... und wie kann ich das beheben?
Da der einzige offengelegte Inhalt das englische Wort ist don't
, können wir ableiten, dass die gesamten Daten 95% ASCII sind . Das macht es möglich, die manuelle Inspektion zu verwenden ...
Erstellen Sie eine Liste aller unterschiedlichen Gobbledegook-Sequenzen und plausiblen Ersetzungen, beginnend mit
0x89dbaa
->'
.Verwenden Sie ein byteorientiertes Werkzeug (z. B.
sed
), um diese Ersetzungen vorzunehmen.???
Profitieren!