Öffnet ein JPG-Bild mit Notepad, fügte den gesamten "Text" in eine neue Notepad-Datei ein, wurde in .JPG geändert und öffnet sich nicht mehr. Warum?

71552
Nguyễn Tuấn Danh

Dieses Phänomen hat mir Fragen gestellt.

Hier ist das ausführliche Experiment, mein Betriebssystem ist Windows 7 x64 SP1:

  • Ich habe eine Bilddatei (JPG) in TXT geändert, indem Sie einfach die Erweiterung geändert haben (oder Sie können die JPG-Datei einfach mit dem Notizblock öffnen.)

Es sollte so aussehen, seltsam aussehende Textsequenzen, und einige (sehr selten) sind tatsächlich von Bedeutung, wie im Screenshot unten "creator: dg-jpeg v1.0 ...".

Sample JPG text

  • Ich habe das Wrapping deaktiviert und den gesamten Text mit Strg + A ausgewählt (um sicherzustellen, dass nichts übersehen wird)
  • Ich habe den kopierten Text in eine andere leere TXT-Datei eingefügt und als JPG gespeichert. Ich habe die neue Dateigröße mit dem ursprünglichen JPG verglichen. Alle von ihnen (dem Original JPG, der konvertierten TXT - Datei und der erstellten TXT - Datei neu) sind die genauen gleiche Größe, auf Bytes.

Wenn ich versuchte zu öffnen, sagte Windows, dass "Windows Photo Viewer dieses Bild nicht öffnen kann, weil die Datei beschädigt, beschädigt oder zu groß ist" .

Ich habe sogar versucht, es zu testen andere Methode verwendet: das JPG mit Notepad geöffnet, schnitt ich ONE bekannt Charakter von einem Ort leicht zu merken (wie das ersten Zeichen der zweiten Zeile), dann speichern Sie die Datei. Der Betrachter würde natürlich dieselbe Nachricht anzeigen. Dann öffnete ich es wieder und fügte das Zeichen an der EXACT- Position ein (Notepad merkt sich seinen Ausgangszustand wie Fensterposition, Umbruch, Schriftgröße ... so habe ich kein Problem damit).

Und immer noch der gleiche Fehler. Sie können dies ausprobieren, um die Idee zu erhalten. Denken Sie daran, ein kleines Bild zu wählen.

Was könnte die Ursache für dieses Phänomen gewesen sein?

81
Versuchen Sie den Befehl fc. Öffnen Sie eine Eingabeaufforderung und tun Sie `C: \ blah> fc file1 file2` Es ist möglich, dass Dateien die gleiche Größe haben, sich aber unterscheiden. (Obwohl eine zufällige Änderung normalerweise dazu führt, dass eine Datei nicht die gleiche Größe hat, könnte dies jedoch leicht sein). Der Befehl fc ist sehr nützlich für die Untersuchung der Vorgänge. Sie können auch den Befehl xxd verwenden. Dies ist in cygwin und wird auch mit vim7 geliefert. xxd -p file1 Dadurch wird das Hex einer Datei ausgegeben. Sie können das Hex der beiden Dateien damit und mit fc vergleichen. Oder öffnen Sie den Hex im Notizblock und blättern Sie mit den beiden Registerkarten zwischen den beiden Notizblockfenstern. barlop vor 10 Jahren 4
Sie versuchen, eine Binärdatei mit einem einfachen Texteditor wie Notepad zu lesen. Es kann die ANSI-Codierung nicht richtig lesen und konvertiert sie daher. Wenn Sie es speichern, ist die Datei nicht mehr binär und daher kann der Parser die Daten in der Datei nicht lesen. (Der Unterschied zwischen dem Speichern von XML-Dateien und dem Speichern von Binärdateien ist ein interessantes Thema.) Wenn Sie dasselbe Experiment mit Notepad ++ versuchen, ist das, was Sie versucht haben, erfolgreich. woutervs vor 10 Jahren 21
Mögliches Duplikat von [Warum erscheint eine Exe-Datei in einem Texteditor wie Notepad nicht als Einsen und Nullen?] (http://superuser.com/questions/693440/why-does-an-exe-file-not-appear -as-one-and-zero-in-a-text-editor-wie-notep) Horn OK Please vor 10 Jahren 1
Für Interessierte: Sie können Bilder in Vim bearbeiten: Der Trick ist jedoch, dass Vim die Datei im Format [XPM] (https://en.wikipedia.org/wiki/X_PixMap) konvertiert, das aus reinem ASCII-Format besteht. Boldewyn vor 10 Jahren 2
@ ŁŁǫǛȉЖΦΤїҪ (@allquixotic) Ich stimme nicht zu; Diese Frage ist kein Dup von [Warum erscheint eine Exe-Datei nicht als Einsen und Nullen?] (http://superuser.com/q/693440/150988); Diese Frage bezieht sich nicht auf die Tatsache, dass Notepad Änderungen an Binärdateien vornimmt, die nicht vom Benutzer angefordert werden (worum es bei _this_ frage _all_ geht). OTOH, [RAW-Bilddaten als Bild speichern] (http://superuser.com/q/283588/150988) liegt etwas in der Nähe - aber für VTC ist es mir immer noch nicht ähnlich. Scott vor 10 Jahren 1
@Scott Nun ja * sagt * möglich * Duplikat ... und diese Frage diente meistens als Referenz; Ich hätte einen Kommentar mit "See also: " posten sollen, aber ich war zu faul: S Horn OK Please vor 10 Jahren 0
Versuchen Sie es mit einem Hex-Editor. Panzercrisis vor 10 Jahren 0
Lange Geschichte, Notepad ändert Ihre Datei, bevor sie Ihnen angezeigt wird. Derek 朕會功夫 vor 10 Jahren 4
Irgendeine Idee, dass es in Notepad ++ funktionieren wird? Nguyễn Tuấn Danh vor 10 Jahren 0
@ NguyễnTuấnDanh Warum sogar nach Notepad ++ fragen? Verwenden Sie keinen Texteditor, um beliebige Daten zu bearbeiten. Das ist das völlig falsche Werkzeug für den Job. Verwenden Sie einen geeigneten Hex-Editor oder, noch besser, etwas, das für die Bearbeitung von JPEG-Bildern entwickelt wurde (z. B. ein Bildeditor). Ich bin mir nicht sicher, was Sie erwartet haben, indem Sie zufällige Byteketten mit einem Programm öffnen, das für die Textbearbeitung vorgesehen ist. Es ist wie der Versuch, MP3 mit Photoshop zu bearbeiten. Jason C vor 10 Jahren 0
Sie wissen, dass dieses Spiel manchmal Spaß macht, indem Sie Text in einen Übersetzer eingeben, ihn in eine Sprache übersetzen und dann in Ihre Sprache zurücksetzen und über die schlechte Grammatik in den Ergebnissen lachen? Im Grunde haben Sie JPEG-Daten in einem Texteditor geladen und gespeichert. Jason C vor 10 Jahren 0
@woutervs "Wenn Sie dasselbe Experiment mit Notepad ++ versuchen würden, werden Sie erfolgreich sein". versuchte mit notepad ++ und sublime text fehlgeschlagen. Saif vor 8 Jahren 0
@Saif Aus Gründen des Experiments habe ich es auch ausprobiert, an meinem Ende mit Standardeinstellungen von N ++ perfekt gearbeitet. woutervs vor 8 Jahren 0

6 Antworten auf die Frage

80
mangper

Abhängig von der zum Öffnen der Datei verwendeten Kodierung wird möglicherweise ein anderes Verhalten angezeigt. Mein Windows 7-Notepad ermöglicht das Öffnen einer Datei in ANSI, UTF-8, Unicode oder Unicode Big Endian.

Ich habe dieses Problem mit einem kleinen 2x2-Pixel-JPEG-Bild getestet, das mit gimp erstellt und die Bilddatei mit ANSI-Kodierung geöffnet und gespeichert wurde. Beim Öffnen des ursprünglichen und des gespeicherten Bildes mit einem Hex-Editor sehe ich, dass alle 00-Sequenzen (zwei Hex-Ziffern, NUL-Steuerzeichen ) in 20 (Leerzeichen) umgewandelt wurden.

Durch Ersetzen aller 20 durch 00 im Hex-Editor wird das Bildformat wiederhergestellt.

Ich habe es ein bisschen gegoogelt und keine Hinweise gefunden, warum dies so ist. Nur ein Verweis auf einen Beitrag, der davor warnt (Google-Cache-Link, die Seite ist nicht verfügbar).

Wenn Sie die Datei als UTF-8 speichern / öffnen, werden anscheinend noch NUL-Zeichen in Leerzeichen konvertiert. Die resultierende Dateigröße wird jedoch aufgrund der Konvertierung von Einzelbyte-Zeichen in UTF-8-Mehrbyte-Sequenzen erhöht.

Wenn Sie die Datei als Unicode speichern / öffnen, werden anscheinend NUL-Zeichen in Leerzeichen konvertiert, und außerdem wird am Anfang der Datei, der Stückliste, ein Byte hinzugefügt .

0x00 ist ein Zeichenkettenabschluss in C-Zeichenfolgen. Sie haben sie möglicherweise ersetzt, da eine Textdatei sie nicht enthalten sollte. Notepad ist ein sehr altes Programm. Zonder vor 10 Jahren 22
@Zonder Und was haben C-Strings damit zu tun? C-Strings sind nur in ** RAM ** vorhanden. Eine Datei * darf * keine C-Zeichenfolgen enthalten. Auch Windows-Programme sind normalerweise in .NET-Sprachen geschrieben, so dass C überhaupt nichts mit all dem zu tun hat. Bakuriu vor 10 Jahren 0
Wenn Sie eine Datei in RAM geladen haben und dann mit einem String-Zeiger darauf referenziert wurden, würde sie nur bis zum ersten 0x00 nachschlagen. Notepad ist älter als .NET und verwendet die CLR nicht. (Ich weiß sicher, dass es nur minimalen Wartungsaufwand gibt, wenn es nicht kaputt ist, reparieren Sie es nicht.) Zonder vor 10 Jahren 3
Ich bezweifle, dass notepad.exe eine ausführbare .NET-Datei ist. knittl vor 10 Jahren 25
@ Bakuriu AC-String kann in einer Datei am sichersten sein; Ich kann mir zahlreiche Dateiformate vorstellen, die diese enthalten. Die überwiegende Mehrheit der Apps, die mit Windows-Apps geliefert werden, sind nativ und nicht .NET. Das heißt, Notepad schreibt keine nullterminierten Zeichenfolgen in Dateien. Carey Gregory vor 10 Jahren 10
"C-Strings können in einer Datei vorhanden sein" -> Nun, wenn Sie sie * auf Platte * serialisieren, können sie dies. Der Vorgang des Serialisierens der Daten von einer speicherinternen Datenstruktur in eine Datei auf einem Blockgerät macht sie jedoch nicht mehr zu einem C-String *, da C selbst die serialisierten Daten nicht mehr nativ lesen oder schreiben kann, ohne das Betriebssystem aufzurufen Routinen zum Lesen und Schreiben von Dateien. Wenn der C-String auf die Festplatte geschrieben wird, wird er * normalerweise * in einem Textformat (z. B. UTF-8 oder ASCII) codiert. Dies könnte das Umwandeln (auf verschiedene Weise) der ursprünglichen Bits des C-String-Puffers im virtuellen Speicher beinhalten. Horn OK Please vor 10 Jahren 2
@ Bakuriu: Windows-Programme werden normalerweise nicht in .NET geschrieben. Es ist C / C ++ und im Kern nativ. Eine der von Microsoft entwickelten .NET-Anwendungen war der Live-Writer, der inzwischen eingestellt wird. Bhathiya Perera vor 10 Jahren 4
Jedes Zeichenfeld, das semantisch mit einem "\ 0" abgeschlossen ist, kann (abhängig vom Verwendungszweck) als C-Zeichenfolge bezeichnet werden. Sie kann also unbedingt in Dateien gefunden werden! Verwechseln Sie C-Zeichenfolgen nicht mit String-Literalen. Lightness Races in Orbit vor 10 Jahren 2
@Zonder Ich denke, jeder halbwegs anständige C / C ++ - basierte Texteditor verwendet C-Strings nicht direkt, sondern muss zeilenbasierte Zeichenpuffer mit einem Zähler für die Länge implementieren, damit sie alles speichern können , sogar Steuerzeichen. mangper vor 10 Jahren 1
Der Grund dafür ist, dass alle Textdateien Binärdateien sind, aber nicht alle Binärdateien Textdateien. Textdateien folgen Regeln, die als Zeichenkodierung bezeichnet werden. Wenn eine Datei die Regeln nicht einhält, wird sie entsprechend den Regeln geändert. JPEG-Dateien befolgen Regeln, die für JPEG spezifisch sind, und entsprechen keiner Zeichencodierung, was andernfalls verschwenderisch wäre (Zeichencodierung verwendet nicht alle möglichen Bits in jedem Byte). Die Übersetzung in eine Zeichencodierung verursacht Datenverlust / -schaden. Einige Texteditoren unterstützen jedoch binär. phyrfox vor 10 Jahren 2
@CareyGregory Wenn Sie mit binären Daten in C ++ arbeiten, verwenden Sie keine Zeichenfolgen, sondern "Byte []", wobei die Länge ein anderes Datenelement (Metadaten) ist. "Strings" benötigen diese Metadaten nicht, da ein Sonderzeichen ("\ 0") das Ende der Daten signalisiert. Das bedeutet natürlich, dass mindestens '\ 0' als Inhalt einer Zeichenfolge unzulässig ist (sie hätten ein "Escape" -Zeichen '\ 0' registrieren dürfen, aber dazu müssten auch die Rohdaten geändert werden, also nicht eine Lösung für das OP). SJuan76 vor 10 Jahren 0
@ SJuan76 Huh? C ++ definiert keinen Datentyp namens "Byte". Vielleicht denkst du an eine andere Sprache? Und die Anwendungsentwickler können mit binären Daten umgehen, wie sie es für richtig halten, einschließlich der Verwendung von C-Strings, wenn sie dies wünschen. Wie gesagt, ich kann mir zahlreiche binäre Dateiformate vorstellen, die C-Strings enthalten. Carey Gregory vor 10 Jahren 5
@ SJuan76, C ++ hat keinen Byte-Typ, obwohl einige Entwickler den Header-Dateien "typedef unsigned char byte" hinzufügen, um so zu tun, als ob dies der Fall wäre. AresAvatar vor 10 Jahren 0
Windows definiert jedoch BYTE, das verwendet werden sollte, wenn Bytes verwendet werden sollen ;-) Sebastian Godelet vor 10 Jahren 0
Es ist nicht wichtig, dass Notepad alt ist und es nicht spielt, in welcher Sprache es geschrieben wurde. Notepad verwendet ein Standard-Bearbeitungssteuerelement. Der Standard-Bearbeitungssteuerungs-Text wird über [`WM_SETTEXT`] (http://msdn.microsoft.com/) festgelegt. de-de / library / windows / desktop / ms632644 (v = vs.85) .aspx), und diese Nachricht setzt voraus, dass Zeichenfolgen nullterminiert sind und keinen Parameter für die Zeichenfolgenlänge enthalten. Die einzige Möglichkeit, Notepad in den Editor aufzunehmen, ist die Verwendung einer benutzerdefinierten Komponente und einer benutzerdefinierten Nachricht zum Festlegen des Textes, was (mit Recht) nicht möglich ist. Diskussionen über C / C ++ / VB / .NET sind völlig irrelevant. Jason C vor 10 Jahren 1
36
Bhathiya Perera

Warum es versagt:

Notepad erstellt Leerzeichen (ASCII code 32)für Zeichen wie NUL, (ASCII code 0) da das Textfeld von Windows API nur nullterminierte char * ASCIIZ (Zeichenarray, Zeiger) zulässt . Beim ersten NUL wird es abgeschnitten.

Dies ist darauf zurückzuführen, dass die Windows-API meistens in der Sprache C geschrieben ist und nullterminierte Zeichenfolgen eine der häufigsten Funktionen sind. Selbst wenn moderne Windows- und Unicode-Versionen als gleich null betrachtet werden, treten Zeichenfolgen auf. Notepad ersetzt sie einfach durch Leerzeichen, damit Sie die vollständige Datei anzeigen können.

Wenn Sie also die Datei speichern, ist sie beschädigt.

Wikipedia-null-terminierte Zeichenfolgen


Wie forsche ich weiter?

Sie können einen Vergleicher wie Beyond Compare (kommerziell, Trial) verwenden, um den Charakterersetzungseffekt zu sehen. Siehe auch andere binäre Vergleichstools .

hex comparison

Anmerkung : (20) 16 = (32) 10


Der Grund für den Notizblock wirkt bei großen Dateien langsam

Es prüft jedes Zeichen und ersetzt Sonderzeichen durch Leerzeichen. Andere Software führt keine In-Memory-Konvertierungen durch (zumindest nicht als Notepad). Sie geben Sonderzeichen nur anders wieder. Und sie verwenden fortgeschrittene Puffertechniken.


In Notepad.exe suchen (XP 32-Bit)

(Ich gehe davon aus, dass es immer noch in C ++ geschrieben ist oder zumindest einen vergleichbar ähnlichen Linker verwendet. )

notepad

Ich verwende das PEiD- Tool (das die Entwicklung mit Einführung von PE + / 64-Exes gestoppt hat)

PEiD befindet sich gebündelt im Bin-Ordner von Universal Extractor

Ich zog den Notizblock aus. ex_ datei von der Windows xp iso offensichtlich. Versuch es. Es ist ein CAB-Datei-Extrakt mit 7z.

Warnung ! Ihr Virenscanner erkennt Universal Extractor / PEiD möglicherweise als Hacker-Tools oder Viren. Vertrauen Sie nicht, laden Sie es nicht herunter !!


Weitere Informationen zur Windows-API

Credits: Jason C

Es ist nicht nur das Textfeld; WM_SETTEXT enthält im Allgemeinen keinen Parameter zum Angeben der Länge der Zeichenfolge, und es wird angenommen, dass Zeichenfolgen bei null enden. Sie können immer ein benutzerdefiniertes Textfeld mit einer benutzerdefinierten Nachricht erstellen, die die Länge der Zeichenfolge angibt, Notepad und die meisten anderen Programme jedoch nicht. Die Funktion SetWindowText stellt auch keinen Längenparameter bereit.

Es ist ein bisschen seltsam, dass Sie das Eigenschaftsblatt für eine mit einer Windows XP-Version gebündelte Notepad-Programmdatei anzeigen. Wenn Sie jedoch nach dem Window-Design urteilen, führen Sie eindeutig eine Version von Windows 8 aus. Dies würde erklären, warum die Programmdatei mit der Programmdatei verknüpft wurde Version 7.1 des Tool-Sets - so wurde Windows XP und die zugehörigen Dienstprogramme kompiliert. Die Windows 8-Version von Notepad wird zweifellos mit einer neueren Version der SDK-Tools kompiliert. Cody Gray vor 10 Jahren 1
Es ist nicht nur das Textfeld; [`WM_SETTEXT`] (http://msdn.microsoft.com/de-de/library/windows/desktop/ms632644 (v = vs.85) .aspx) enthält im Allgemeinen keine Parameter für die Angabe der Zeichenfolgelänge und der Zeichenfolgen Es wird immer angenommen, dass es bei null endet. Sie können immer ein benutzerdefiniertes Textfeld mit einer benutzerdefinierten Nachricht erstellen, die die Länge der Zeichenfolge angibt, Notepad und die meisten anderen Programme jedoch nicht. Jason C vor 10 Jahren 2
@ BhathiyaPerera Weil ich mit meiner Arbeit zufrieden bin, indem ich Informationen in einem Kommentar hinzufüge. Gerne können Sie Ihre Antwort mit diesen Informationen verbessern, wenn Sie möchten. Jason C vor 10 Jahren 0
28
JohnC

Notepad behält nicht alle Sonderzeichen / erweiterten Zeichen so, wie sie sind. Ich habe keine Referenz für dieses Verhalten sofort zur Verfügung, aber ich habe festgestellt, dass dies der Fall ist, zum Beispiel bei einem Zeilenende-Endung in UNIX-Format, das Notepad in CRLF und null (0x00) konvertiert, die es ignoriert. In einer Binärdatei, wie z. B. einem JPG, kommt es möglicherweise zu zufälligen Vorkommen der Zeichen, die Notepad nicht speichert. Versuchen Sie Ihr Experiment mit einem HEX-fähigen Editor, und es sollte dann funktionieren. Ich werde meine Antwort aktualisieren, wenn ich eine gute Referenz finde und einen HEX-Editor getestet habe.

Update: Ich habe ein paar bekannte Programmierer-Editoren ausprobiert, aber nur einer von ihnen hat sofort funktioniert, HxD von Maël Hörz . Ich habe HxD noch nie verwendet, aber dank einer Antwort auf diesen Stack-Artikel, Ein Hex-Viewer / Editor-Plugin für Notepad ++, gefunden .

Die anderen Editoren, die nach einigen Minuten nicht funktionierten, waren Notepad ++, Notepad2 und UltraEdit (Version 17.3, ältere Version). Ein paar davon hatten Probleme beim Kopieren / Einfügen der ersten Bytes, der magischen Zahl der JPEG- Dateisignatur FF D8 FF. Vielleicht würden sie mit etwas mehr Fummeln arbeiten, als ich derzeit Zeit habe.

Sublime Text (2/3) öffnet automatisch eine binäre Datei, indem sie im Hex-Format angezeigt wird. Als Beispiel den Start einer JPEG-Datei durch Klicken auf "Öffnen": http://puu.sh/aaAVx/bd08dab46e.png tomsmeding vor 10 Jahren 0
In der Regel konvertiert Notepad LF in CRLF. Der LF wird so belassen, wie er ist, und der Text wird so angezeigt, als gäbe es überhaupt keinen Zeilenumbruch! Moshe Katz vor 10 Jahren 3
6
CJ Dennis

Früher war das in der Lage, dies mit Write Write am Tag zu tun. Es war ein Standardprogramm in Windows 3.1, aber ich kann mich nicht erinnern, ob Windows 95 es enthält. Das Schreiben würde eine binäre sichere Bearbeitung aller Dateien ermöglichen, die geöffnet werden könnten (wahrscheinlich sehr begrenzte Dateigröße). Notepad ist definitiv nicht binärsicher (der Text bleibt derselbe, aber die tatsächlichen Bytes von Nicht-Textzeichen (z. B. Steuercodes) können sich ändern), weshalb Ihr JPG-Beispiel nicht funktioniert. Versuchen Sie, eine Kopie von Write (und sehr alten Windows) zu erhalten, und versuchen Sie es erneut.

Laut Wikipedia-Artikel "Windows Write" wurde Write bis zu Windows NT 3.5 hinzugefügt. Es wurde ab Windows 95 durch Wordpad ersetzt. write.exewar noch im Windows-Verzeichnis vorhanden, war aber lediglich ein Wrapper zum Öffnen von Wordpad.

5
sbecker

Ich denke, es ist nicht so sehr ein Problem der Codierung, sondern auch des Zeichensatzes. Das JPG-Format ist im Wesentlichen ein Byte-Stream. Dadurch werden nicht druckbare Zeichen wie NUL, ETX, STX, SOH, DLE usw. zugelassen.

Microsoft Notepad kann diese nicht druckbaren Zeichen nicht anzeigen. Es kann Platzhalter einer Art wie ein Leerzeichen für ein Nullzeichen anzeigen. Beim Öffnen der Datei mit Notepad wird nicht der tatsächliche Inhalt angezeigt, sondern der Inhalt, der durch die ausgewählte Kodierung (utf-8, utf-16 usw.) dekodiert und von einem bestimmten Zeichensatz (Unicode, ASCII usw.) angezeigt wird. druckbare Zeichen.

Wenn Sie den gesamten angezeigten Text auswählen und den Text in die Zwischenablage kopieren, kopieren Sie nur die druckbaren Zeichen einschließlich der Platzhalter. Dadurch werden Nullzeichen automatisch in Leerzeichen umgewandelt und andere nicht druckbare Zeichen werden vollständig ignoriert.

Im Grunde verlieren Sie nur Inhalte, wenn Sie dies auf diese Weise tun. Wenn Sie stattdessen einen Hex-Editor verwenden, wird der gesamte Inhalt vollständig kopiert.


Update: Die Antwort von Bhathiya Pereras ist richtig: https://superuser.com/a/782885/322784 Nicht druckbare Zeichen werden beim Kopieren von Text in die Zwischenablage nicht ignoriert.

Jede Datei ist "im Grunde ein Bytestrom". Jason C vor 10 Jahren 0
@ JasonC Ich würde dem nicht zustimmen. Dabei kann jede Datei als Bytestrom gelesen werden. Strukturierte Dateien wie XML-Dateien können nicht als Datenstrom gelesen werden. Der Inhalt ist erst gültig, wenn das Ende der Datei gelesen wurde. Ein halbes Jpg-Schnitt ist noch gültig und kann angezeigt werden. Es fehlt nur das halbe Bild. sbecker vor 10 Jahren 1
Da gibt es keinen Raum für Meinungsverschiedenheiten. :) XML ist ein Bytestrom wie alles andere, und XML definiert (zusammen mit der Zeichencodierung) ein Format für diese Bytes. Es ist sicherlich als Datenstrom lesbar. Öffnen Sie es zum Beispiel in einem Hex-Editor. Dieser Datenstrom kann nur als XML analysiert werden. Jason C vor 10 Jahren 0
@ JasonCon kann damit eigentlich nicht argumentieren. :) Touché! sbecker vor 10 Jahren 0
2
Dice9

Die JPEG-Datei enthält mit Ausnahme einiger Felder keine Textdaten. Grundsätzlich werden alle Byte-Werte zwischen 0 und 255 gefunden, insbesondere in dem Bereich, der das codierte komprimierte Bild darstellt, das nahezu pseudozufällige Daten enthält.

Notepad behandelt die Daten jedoch standardmäßig als ANSI-Text. Daher werden verschiedene Änderungen an den Originaldaten vorgenommen:

  • Ersetzen Sie Bytes, die spezielle / undefinierte / verbotene Zeichen zuordnen, da diese für einen gültigen ANSI-Text nicht sinnvoll sind

  • kodieren Sie Nullzeichen, Zeilenende und Dateiendefolge erneut nach Windows / DOS-Konventionen

Das bedeutet, wenn Sie die Daten bearbeiten und als Text speichern, wird das JPEG-Format im besten Fall geändert und im schlimmsten Fall unbrauchbar.

["ANSI" ist technisch nicht korrekt] (http://stackoverflow.com/questions/701882/what-is-ansi-format), obwohl es allgemein verstanden wird. Jason C vor 10 Jahren 0