2011-01-31 04:29:39 +0000 2011-01-31 04:29:39 +0000
64
64

Gibt es eine Möglichkeit, Windows 7 so einzustellen, dass UTF8 als Standard-Zeichenkodierung in Windows 7

global UTF-8 als Standard verwendet? ist es wirklich ärgerlich, jeden einzelnen Texteditor so einzustellen, dass er es verwendet.

Antworten (2)

46
46
46
2011-02-02 09:14:36 +0000

Die kurze Antwort ist nein, es ist nicht möglich.

Um das näher auszuführen, fürchte ich, dass Sie in Windows 7 keine globale Kodierungsoption finden werden, mit der Sie beide 1) einen globalen Standard festlegen können, dem 2) alle von Ihnen aufgeführten Anwendungen gehorchen würden.

Auch möchte ich fragen, was das Problem ist, das Sie hier zu lösen versuchen?

Es liegt an der Anwendung, zu entscheiden, ob sie intern Unicode zur Darstellung von Daten verwenden. Obwohl die Verwendung von Unicode empfohlen wird , können Sie nie sicher sein, dass alle Ihre Anwendungen es intern tatsächlich unterstützen.

Was Sie tun können , ist jedoch die Änderung der Standard-Zeichenkodierung für jede der aufgeführten Anwendungen:

  • Für Eclipse kann die Standardkodierung für neue Dateien unter Windows > Preferences > General > Content Types eingestellt werden (siehe post on Eclipse Community Forms )
  • Für Notepad++, navigieren Sie zu Einstellungen > Einstellungen > Neues Dokument/Standard/Verzeichnis und setzen Sie die Kodierung auf UTF-8
  • Was Thunderbird betrifft, bin ich ziemlich sicher, dass es bereits UTF-8 als Standardkodierung verwendet? (siehe diese Anmerkungen zur Zeichenkodierung )
  • Im Falle von OpenOffice (und LibreOffice) brauchen Sie sich eigentlich nicht einmal um die Kodierung zu kümmern, da die von OpenOffice gespeicherten Dokumente auf XML basieren, wobei die Kodierung intern in den XML-Dateien angegeben wird (und UTF-8 ist auch dort bereits die Standardkodierung)
  • Aus Sicht von UTF-8 ist PowerShell knifflig. Sie hat die Standardkodierung von UTF-16LE.
  • Für die Ausgabe von Dateien aus PowerShell in UTF-8 siehe diese Antwort
  • Für die Änderung der Standardkodierung siehe diese Antwort
23
23
23
2011-04-17 06:49:09 +0000

Das ist vor allem deshalb nicht möglich, weil Windows UTF-8 als System-ANSI-Zeichenumsetztabelle nicht zulässt, obwohl es eine ANSI-Zeichenumsetztabelle für UTF-8, Zeichenumsetztabelle 65001 hat. Dafür scheint es mehrere Gründe zu geben:

  • Als Unicode neu war, entschied Microsoft, dass UCS-2 der beste Weg sei, Unicode zu unterstützen. Zu dieser Zeit war Unicode 16-Bit.
  • Windows hat eine ANSI-Zeichenumsetztabelle für jede unterstützte Sprache , im Gegensatz zu Unix und Linux, wo Sprache und Kodierung unabhängig voneinander eingestellt werden können.
  • Die Zeichenumsetztabelle 65001 funktioniert nicht überall. Insbesondere ist sie mit einigen der Multi-Byte-Unterstützung in Windows gebrochen, die erwarten, dass Multi-Byte-Zeichen ein oder zwei Bytes benötigen, während UTF-8 zwischen einem und vier Bytes benötigt. Die WriteFile() API gibt beispielsweise ein falsches Ergebnis unter Codepage 65001 zurück, das durch den gesamten Bibliothekscode, der sich darauf stützt, wie write() .

Der verstorbene Michael Kaplan, der bei Microsoft an der Internationalisierung arbeitete, hatte einen Blog, “Sorting it all Out” , mit mehreren Beiträgen zu verwandten Themen. Ich habe ihm damals direkt per E-Mail über einige dieser Bedenken geschrieben.