
Ich habe die folgende Batchdatei im Editor bearbeitet. In der unteren rechten Ecke des Editors wurde „UTF8“ angezeigt. Ich habe die Datei im ANSI-Format gespeichert.
Jetzt wurde in der unteren rechten Ecke des Editors „ANSI“ angezeigt. Ich schloss die Datei und öffnete sie erneut. In der unteren rechten Ecke des Editors wurde „UTF8“ angezeigt. Ich wiederholte den obigen Vorgang mehrere Male und erhielt jedes Mal das gleiche Ergebnis.
Handelt es sich um eine ANSI- oder eine UTF8-Datei?
Oder bedeutet das, was in der unteren rechten Ecke des Notizblocks angezeigt wird, vielleicht nichts?
Dies ist auf Windows 11 Pro 23H2 Build 22631.3296 Windows Feature Experience Pack 1000.22687.1000.0. Windows Notepad 11.2401.26.0
[Entschuldigung! Habe vergessen, die Datei hinzuzufügen]
date /t >C:\health.txt
time /t >>c:\health.txt
sfc /scannow >>c:\health.txt
time /t >>c:\health.txt
sfc /scannow >>c:\health.txt
time /t >>c:\health.txt
Antwort1
Handelt es sich um eine ANSI- oder eine UTF8-Datei?
Beide
Wenn es nur ASCII-Zeichen enthält, ist es sowohl ANSI als auch UTF-8.
Dies trifft auch auf die meisten anderen Zeichensätze und Kodierungen zu. Dies liegt daran, dass die meisten Kodierungen den ASCII-Satz mit den ASCII-Codepunkten (numerische Werte) enthalten.
Ausnahmen wären Zeichenkodierungen wie IBMs EBCDIC, die früher sehr verbreitet war.
Abgesehen davon verwendete Microsoft den Begriff ANSI früher für einen Zeichensatz, von dem sie erwarteten, dass das American National Standards Institute (ANSI) ihn als einen seiner vielen Standards veröffentlichen würde. ANSI tat dies jedoch nicht. Ein genauerer oder nützlicherer Name wäreCodepage 1252. Zu sagen, Sie hätten eine Datei in ANSI geschrieben, ist ungefähr so, als würden Sie sagen, Sie hätten Ihre Küche in der Farbe Pantone oder RAL gestrichen.
Microsoft-Anwendungen schreiben UTF-8-Dateien im Allgemeinen mit einer Byte Order Mark (BOM), die ihren Anwendungen hilft, verschiedene Unicode-Kodierungen wie UTF-16LE, UTF-16BE und UTF-8 zu erkennen. Beachten Sie, dass eine BOM in einer UTF-8-Datei nur dazu dient, die Kodierung des Dateiinhalts zu identifizieren. Sie kann keine Byte-Reihenfolge angeben, da diese für UTF-8 nicht anwendbar ist. Eine BOM in einer Textdatei kann Probleme verursachen, z. B. kann sie verhindern, dass Linux-Shell-Skripte funktionieren, da die BOM die ausführbare Signatur des Skripts verdrängt #!
.
Microsoft-Anwendungen verwenden Bibliotheksfunktionen, umerratendie Kodierung einer Datei anhand des Dateiinhalts. Dies ist notorisch unzuverlässig, obwohl es im Laufe der Zeit verbessert wurde.
Verwandt
Antwort2
Ich vermute, das spielt keine Rolle. Eine Datei, die nur englischen Text enthält, ist oft ASCII, und dann gibt es einfach keinen Unterschied zwischen (unmarkiertem) UTF-8 und ASCII/ANSI.
Wenn Sie die Datei in UTF-8 speichern möchten, müssen Sie sie als UTF-8 mit BOM speichern. Wenn kein BOM vorhanden ist („Byte Order Mark“, ein spezieller Marker am Anfang der Datei), muss der Editor raten, und wenn die Datei keine Sonderzeichen enthält (z. B. nicht-englische diakritische Zeichen wie ä, ö oder ê), spielt das keine Rolle, da die ersten 128 Buchstaben aller gängigen Zeichentabellen gleich sind.
Antwort3
Diese Notepad-Angabe von UTF-8 ist falsch. Ich habe eine Textdatei sowohl in ANSI als auch in UTF-8 gespeichert und beide Dateien waren völlig identisch.
Es scheint, als ob die UTF-8-Implementierung von Notepad ernsthaft inkonsistent ist. Das Speichern im UTF-8-Format hätte ein Byte-Order-Mark (BOM) an den Anfang der Datei, was jedoch nicht geschieht.
Um den Unterschied zwischen ANSI und UTF-8 (mit oder ohne BOM) richtig zu handhaben, benötigen Sie einen weiterentwickelten Texteditor, zum Beispiel Notizblock++.