Festlegen von UTF8 als Standardzeichenkodierung in Windows 7

Festlegen von UTF8 als Standardzeichenkodierung in Windows 7

Gibt es eine Möglichkeit, Windows 7 so einzustellen, dass UTF-8 global als Standard verwendet wird?
Es ist wirklich ärgerlich, jeden einzelnen Texteditor entsprechend einzustellen.

Antwort1

Die kurze Antwort lautet:nein, das ist nicht möglich.

Um es genauer zu sagen: Ich fürchte, Sie werden in Windows 7 keine globale Kodierungsoption finden, mit der Sie 1) eine globale Standardeinstellung festlegen können, die 2) von allen aufgelisteten Anwendungen befolgt wird.

Außerdem möchte ich fragen, welches Problem Sie hier zu lösen versuchen?

Es liegt an der Anwendung, ob sie intern Unicode zur Datendarstellung verwendet.Obwohl die Verwendung von Unicode empfohlen wird, können Sie nie sicher sein, dass alle Ihre Anwendungen dies tatsächlich intern unterstützen.

Was dutun können, allerdings wird die Standardzeichenkodierung für jede der aufgelisteten Anwendungen geändert:

  • Für Eclipse kann die Standardkodierung für neue Dateien wie folgt eingestellt werden:Windows > Einstellungen > Allgemein > Inhaltstypen(sehenBeitrag zu Eclipse Community Forms)
  • Navigieren Sie für Notepad++ zuEinstellungen > Voreinstellungen > Neues Dokument/Standard/Verzeichnisund stellen Sie die Kodierung aufUTF-8
  • Was Thunderbird betrifft, bin ich ziemlich sicher, dass es bereits UTF-8 als Standardkodierung verwendet? (siehediese Hinweise zur Zeichenkodierung)
  • Im Fall von OpenOffice (und LibreOffice) müssen Sie sich eigentlich nicht einmal um die Kodierung kümmern, da die von OpenOffice gespeicherten Dokumente auf XML basieren, wobei die Kodierung intern in den XML-Dateien angegeben wird (undUTF-8ist dort auch schon die Vorgabe)
  • Aus UTF-8-Sicht ist PowerShell knifflig. Es hat die Standardkodierung UTF-16LE.
    • Informationen zum Ausgeben von Dateien aus PowerShell in UTF-8 finden Sie unterdiese Antwort
    • Informationen zum Ändern der Standardkodierung finden Sie unterdiese Antwort

Antwort2

Dies ist hauptsächlich deshalb nicht möglich, weil Windows UTF-8 nicht als System-ANSI-Codepage zulässt, obwohl es eine ANSI-Codepage für UTF-8 gibt.Codepage 65001. Dafür scheint es mehrere Gründe zu geben:

  • Als Unicode neu war, entschied Microsoft, dass UCS-2 die beste Möglichkeit zur Unicode-Unterstützung wäre. Damals war Unicode 16-Bit.
  • Windows verfügt über eine ANSI-Codepage für jede unterstützte Sprache, anders als bei Unix und Linux, wo Sprache und Kodierung unabhängig voneinander eingestellt werden können.
  • Codepage 65001 funktioniert nicht überall. Insbesondere funktioniert sie nicht mit der MultiByte-Unterstützung in Windows, die davon ausgeht, dass Multibyte-Zeichen ein oder zwei Bytes benötigen, während UTF-8 zwischen einem und vier Bytes benötigt. DieWriteFile()APIgibt beispielsweise ein falsches Ergebnis unter Codepage 65001 zurück, das sich durch den gesamten Bibliothekscode zieht, der darauf basiert, wie z. B.write().

Der verstorbene Michael Kaplan, der bei Microsoft an der Internationalisierung arbeitete, hatte ein Blog,„Alles klären“, mit mehreren Beiträgen zu verwandten Themen. Ich habe ihm damals zu einigen dieser Bedenken direkt eine E-Mail geschickt.

verwandte Informationen