Ich verwende VS Code, um eine deutsche Site zu erstellen. Ich verwende ein deutsches Sonderzeichen in einer style.css
Datei. Nach dem Neustart von VS Code und dem Ändern der Dateikodierung von UTF-8 auf Windows-1252 erhalte ich das, was im Bild unten angezeigt wird.
Meine automatische Kodierungserstellung ist deaktiviert und die Standardkodierung ist UTF-8.
Wie kann ich die automatische Kodierungsänderung stoppen? Meine VS Code-Version ist 1.32.3 und ich verwende Windows 10.
Antwort1
Wie kann ich die automatische Änderung der Kodierung stoppen?
- EntsprechendDein eigener Kommentar, DieKodierung automatisch erratenist schonaus.
Die Tatsache, dass VS Code Ihre Datei kodiert alsWindows-1252
(Codepage 1252oderCP1252)
erfordert eine andere Erklärung.
Wenn Sie davon ausgehen, dass Sie eine VS Code-Einstellung haben, die Ihre CSS-Dateien speziell
alsWindows-1252, ich konnte Ihre Situation sehr genau reproduzieren.
1
1. Das gesamte Szenario reproduzieren
Ich benutze einvereinfachte Version Ihrerstyle.css
, die nur eine einzige Zeile enthält:
/* Ü */
Damit VS Code die Datei mit Kodierung öffnetWindows-1252
(mit Auto Guess Encodingaus),
gehe ich davon aus, dass der VS-Code settings.json
den folgenden Code/die folgende Zeile enthält:
2
"[css]": {"files.encoding": "windows1252"},
Eine solche Einstellung bewirkt, dass VS Code alle .css
Dateien als
Windows-1252.
3
Wenn Sie herunterladenstyle.css
, klicken Sie dann mit der rechten Maustaste darauf und
Mit Code öffnen, erwarten zu sehen :
^ zum Vergrößern klicken
Der Grund, warum Sie sehenzwei Windows-1252Zeichen – Ãœ
– anstelle dereinzel UTF-8 Ü
Charakter, ist dasWindows-1252
liest jedes Byteals einzelnes Zeichen – die Nicht-ASCII-Zeichen
Ã
und œ
.
UTF-8Andererseits verwendetzwei Bytesum ein einzelnes Nicht-ASCII-Zeichen zu lesen, wie Ü
.
4
1. a. So zeigen Sie Ü
richtig an
Damit der deutsche Buchstabe Ü
richtig angezeigt wird, müssen Sie auf klicken:
Mit Kodierung erneut öffnen >UTF-8Aus dem Inhalt erraten.
AuswählenMit Kodierung erneut öffnen nichtdie Datei selbst ändern.
Es ändert sich, wie die Dateiangezeigtin VS Code – so geht’s
dekodiert.
1. b. Was Sie tun solltennichtTun
Wenn Sie stattdessen auf Folgendes klicken, tritt ein Problem auf:
Mit Kodierung sparen>UTF-8Aus dem Inhalt erraten.
Dastutdie Datei ändern – allenicht-ASCII-Zeichen werden umgewandeltin die entsprechenden UTF-8-Zeichen. Wenn Sie die Datei speichern, wird sie mit diesen Änderungen gespeichert.
Wenn Sie nun schließen und wieder öffnen style.css
, wird es wiedercodiertalsWindows-1252. (Warum? – Weil die Zeile „ in “ VS Code
genau das sagt!)"[css]": {"files.encoding": "windows1252"},
settings.json
Folgendes werden Sie sehen.
Beachten Sie, dass es Ü
sich um dieselben Zeichen handelt wie im Screenshot Ihrer Frage.
Der Grund, den Sie jetzt sehenvierZeichen anstelle vonzweiist das gleiche wie vorher.
– Dieeinzel UTF-8Zeichen Ã
(2 Bytes) wird als
zweiZeichen Ã
(immer noch 2 Bytes) bei der Dekodierung mit
Windows-1252Und
die SingleUTF-8Zeichen œ
wird als die beiden
Windows-1252Figuren Å“
.
Damit ist meine Reproduktion Ihres Szenarios abgeschlossen.
2. So reparieren Sie die beschädigte Datei
Vorausgesetzt, Sie möchten anzeigen Ü
und nicht die beschädigten Ãœ
, müssen Sie : \
- Konvertieren Sie die Datei zurück,
- kodieren mitUTF-8,
- Schließen Sie die Datei und öffnen Sie sie erneut.
1. Konvertieren Sie die Datei zurück
So können Sie den beschädigten Zustand style.css
wieder in den ursprünglichen Zustand zurückversetzen.
Beginnen Sie mit dem vorherigen Screenshot und klicken Sie in der Statusleiste aufWindows 1252,
DannMit Kodierung erneut öffnen, und schlussendlichUTF-8.
Erwarten Sie, zu sehen Ü
. Die Datei ist immer noch beschädigt, also jetztKonvertierenes zuWindows-1252
Beim Klicken :
UTF-8 >Speichernmit Kodierung > Windows 1252.
Die Datei wurde nun wieder in den ursprünglichen Zustand zurückversetzt.
Was noch zu tun istdekodierenes richtig (mitUTF-8).
2. Kodierung mit UTF-8
settings.json
Löschen Sie in "[css]": {"files.encoding": "windows1252"},
.
3. Schließen Sie die Datei und öffnen Sie sie erneut
Schließen und erneut öffnen style.css
. Überprüfen Sie, ob angezeigt wirdUTF-8in der Statusleiste. Sie sehen:
Juhu! Mission erfüllt.
3. Kodieren vs. Konvertieren in Notepad++
Um den Unterschied zwischenDekodierung/KodierungUnd
Konvertiereneine Datei, kann es hilfreich sein, sich anzusehen, wie dies in einem anderen vielseitigen Texteditor funktioniert:Notizblock++.
Diese hilfreiche Antworterklärt den Unterschied in einem lehrreichen Bild:
Codierungin Notepad++ entsprichtWieder öffnenmit Kodierung
in VS Code, während
Konvertierenin Notepad++ entspricht
Speichernmit Kodierungim VS-Code.
4. ASCII, ANSI und UTF-8
Einige Fakten können zum Verständnis beitragen,ASCII, ANSI, UndUTF-8Sind.
Ein ASCII-Zeichen verwendet nur ein einziges Byte.
Oder, wenn man so will, es verwendet sieben der acht Bits eines Bytes – das höchstwertige Bit ist immer Null.
Dies entspricht 0-127 in Dezimalzahlen, 0x00-0x7F in Hexadezimalzahlen
und 0000 0000 - 0111 1111 in Bits.Sowohl ANSI/Windows-1252 als auch UTF-8 kodieren ein ASCII-Zeichen als das ASCII-Zeichen selbst.
Beispielsweisek
ist das Zeichen (Buchstabe) ein reines ASCII-Zeichen. Dies istein Byte(acht Bits), das die Dezimalzahl 107 hat, die Hexadezimalzahl ist 0x6B, in Bits 0110 1011.
Folglich ist es falsch zu sagen, dass das ASCII-k
Zeichen nichtein ANSI-Zeichen, noch dass esnichtein UTF-8-Zeichen. – Es ist beides!
Wenn eine Textdatei enthältnurASCII-Zeichen, dann stimmen die ANSI- und UTF-8-Kodierungen überein.
Siekann nichtunterscheiden. Eine solche Datei istbeideANSIUndUTF-8 kodiert. 5
^ zum Vergrößern klicken
Die obere Hälfte desWindows-1252Die obige Tabelle entspricht den Zahlen 0-127 und die untere Hälfte den Zahlen 128-255. Letztere sind die Nicht-ASCII-ANSICharaktere vonWindows-1252.
Das Bild unten stammt von
UTF-8- und ASCII-Zeichentabellenund
zeigt alle dieseWindows-1252Zeichen noch einmal, nummeriert 128-255.
Wenn Sie wissen möchten, wie viele Bytes (undWasBytes), die ein UTF-8-Zeichen verwendet, versuchen Siedieses Online-Tool.
Verweise
- style.css | enthält nur
/* Ü */
- Beitrag mit Zitat von Cathy Wissink, Microsoft
- Jedes Nicht-ASCII-UTF-8-Zeichen verwendetmindestenszwei (bis zu vier) Bytes
- Tabelle „American Standard Code for Information Interchange“
- Antwort auf die Frage, was ANSI ist | Tabelle in Abschnitt 3
- Unicode Transformation Format - 8 Bit erklärt
- Die Windows-1252 (CP-1252) Kodierungstabelle
- Notepad++ | Download-Seite
- So konvertieren Sie ANSI in UTF-8 in Notepad++
- UTF-8- und ASCII-Zeichentabellen
- Konverter, UTF-8 nach Bytes (hexadezimal)
1
Ich denke, das Szenario, das ich vorstelle, beschreibt plausibel, waskönnte
passiert sind.
Natürlich kann ich nicht genau wissen, was Ihre Situation verursacht hat.
2
Zum Öffnen settings.json
drücken Sie Ctrl+ ,(Komma) und klicken dann auf dasEinstellungen öffnenSymbol in der oberen rechten Ecke:
Verwenden Sie unter macOS ⌘anstelle von Ctrl.
3
Der Begriff „ANSI“ zur Bezeichnung von Windows-Codepages ist eine historische Referenz […].
Microsoft verwendet immer nochANSI für Westeuropaaustauschbar mit
Windows-1252, zum Beispiel in ihrem notepad.exe
Texteditor, der sich normalerweise unter befindet C:\WINDOWS\System32
. Dies ist auch die Konvention, der ich folge. Siehe auchdiese Antwort.
4 Genauer gesagt:jedes Nicht-ASCII-UTF-8-Zeichen verwendetmindestens zwei (bis zu vier) Bytes.
5 Angenommen, Sie haben eine Textdatei mitnurreine ASCII-Zeichen. Wenn Sie die Datei in einem Texteditor öffnen und in der Statusleiste ANSI steht, bedeutet das nicht, dass die DateinichtUTF-8 kodiert. Es bedeutet nur, dass dieser Texteditor ANSI alsStandard Kodierung. Wenn die Standardkodierung UTF-8 wäre, würde der Editor UTF-8 in der Statusleiste anzeigenfür die gleiche Datei.