Stoppen Sie die automatische Kodierungserraten-Funktion von VS Code

Stoppen Sie die automatische Kodierungserraten-Funktion von VS Code

Ich verwende VS Code, um eine deutsche Site zu erstellen. Ich verwende ein deutsches Sonderzeichen in einer style.cssDatei. 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.

Screenshot_mit_Zeichen_und_Kodierung

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.jsonden folgenden Code/die folgende Zeile enthält: 2

"[css]": {"files.encoding": "windows1252"},

Eine solche Einstellung bewirkt, dass VS Code alle .cssDateien als Windows-1252. 3

Wenn Sie herunterladenstyle.css, klicken Sie dann mit der rechten Maustaste darauf und Mit Code öffnen, erwarten zu sehen :

Bei der Kodierung Windows-1252 wird Ü als Ãœ dargestellt.

^ 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.

„Erneut öffnen mit Kodierung“ ändert die Art und Weise, wie die Datei dekodiert wird.

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.

Speichern mit Kodierung > **UTF-8 ändert die Datei selbst.

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.

Speichern mit Kodierung > **UTF-8 ändert die Datei selbst.

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 : \

  1. Konvertieren Sie die Datei zurück,
  2. kodieren mitUTF-8,
  3. 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.csswieder 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.

Windows 1252 > Erneut öffnen mit Kodierung > UTF-8.

Erwarten Sie, zu sehen Ãœ. Die Datei ist immer noch beschädigt, also jetztKonvertierenes zuWindows-1252 Beim Klicken :
UTF-8 >Speichernmit Kodierung > Windows 1252.

UTF-8 > Mit Kodierung speichern > 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.jsonLö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:

Die beschädigte Datei wurde wiederhergestellt.

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:

Der Unterschied zwischen Kodieren und Konvertieren in Notepad++.

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.
    Beispielsweise kist 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- kZeichen 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

Die Windows-1252-Kodierungstabelle (CP-1252).

^ 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.

Die Nicht-ASCII-Zeichen von Windows 1252 (CP-1252).


Wenn Sie wissen möchten, wie viele Bytes (undWasBytes), die ein UTF-8-Zeichen verwendet, versuchen Siedieses Online-Tool.

Verweise


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.jsondrücken Sie Ctrl+ ,(Komma) und klicken dann auf dasEinstellungen öffnenSymbol in der oberen rechten Ecke:

Einstellungen öffnen (JSON)

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.exeTexteditor, 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.

verwandte Informationen