Einstellen von UTF8 als Standardzeichenkodierung in Windows 7

63

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

Baarn
quelle
4
Sie möchten dem Betriebssystem also etwas mitteilen. Und dann greifen alle Editoren auf magische Weise dazu. :) Wie viele Editoren benutzt du? Alle 3 Minuten eine andere? Wie auch immer: superuser.com/questions/221593/windows-7-utf-8-and-unicode Soweit ich weiß: Windows verwendet UTF16 intern überall, und ich bezweifle, dass Sie das ändern können.
Akira
1
Ich benutze Editoren: Notepad, Notepad ++, QT, Eclipse, Thunderbird, Open Office und einige andere ... Ich spreche nicht nur über reine Texteditoren, sondern alles, was mit Text in und Ausgabe funktioniert. Die meisten plattformunabhängigen Texteditoren verwenden unter Linux standardmäßig utf-8, unter Windows jedoch Latin-1.
Baarn
Nicht unter Windows 7, aber unter Windows 10 möglich
phuclv

Antworten:

45

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

Ich fürchte, Sie werden in Windows 7 keine globale Codierungsoption finden, mit der Sie beide 1) einen globalen Standardwert festlegen können, dem 2) alle von Ihnen aufgelisteten Anwendungen gehorchen würden.

Ich möchte auch fragen, welches Problem Sie hier lösen möchten.

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

Sie können jedoch die Standardzeichenkodierung für jede der aufgelisteten Anwendungen ändern:

  • Für Eclipse kann die Standardcodierung für neue Dateien unter Windows> Voreinstellungen > Allgemein> Inhaltstypen festgelegt werden (siehe Beitrag zu Eclipse Community Forms ).
  • Navigieren Sie für Notepad ++ zu Settings> Preferences> New Document / Default / Directory und setzen Sie Encoding auf UTF-8
  • Ich bin mir ziemlich sicher, dass Thunderbird bereits UTF-8 als Standardkodierung verwendet. (Siehe diese Hinweise zur Zeichenkodierung )
  • Im Falle von OpenOffice (und LibreOffice) müssen Sie sich nicht einmal um die Codierung kümmern, da von OpenOffice gespeicherte Dokumente auf XML basieren, wobei die Codierung intern in den XML-Dateien festgelegt wird (und UTF-8 bereits vorhanden ist der Standard dort auch)
  • Aus UTF-8-Sicht ist PowerShell schwierig. Es hat Standardcodierung von UTF-16LE.
    • Informationen zum Ausgeben von Dateien von PowerShell an UTF-8 finden Sie in dieser Antwort
    • Informationen zum Ändern der Standardcodierung finden Sie in dieser Antwort
jsalonen
quelle
4
Nicht die Antwort, auf die ich gehofft hatte, aber ich denke, ich muss mit der Wahrheit leben, danke =)
Baarn
für Notizblockfenster?
Mimouni
23

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 ( Codepage 65001) gibt . Dafür scheint es mehrere Gründe zu geben:

  • Als Unicode neu war, entschied Microsoft, dass UCS-2 die beste Möglichkeit ist, Unicode zu unterstützen. Zu dieser Zeit war Unicode 16-Bit.
  • Windows hat eine ANSI-Codepage für jede unterstützte Sprache , im Gegensatz zu Unix und Linux, bei denen Sprache und Codierung unabhängig voneinander festgelegt werden können.
  • Codepage 65001 funktioniert nicht überall. Insbesondere ist es mit einigen der MultiByte-Unterstützung in Windows, die erwarten, dass Multibyte-Zeichen ein oder zwei Bytes erfordern, während UTF-8 zwischen einem und vier Bytes erfordert, fehlerhaft. Die WriteFile()API gibt zum Beispiel ein falsches Ergebnis unter der Codepage 65001 zurück, das durch den gesamten Bibliothekscode sprudelt, der darauf angewiesen ist, wie zum Beispiel write().

Der verstorbene Michael Kaplan, der bei Microsoft an der Internationalisierung gearbeitet hat, hatte einen Blog mit dem Titel "Sorting it all Out" mit mehreren Beiträgen zu verwandten Themen. Ich habe ihm damals direkt eine E-Mail mit einigen dieser Bedenken geschickt.

Hippietrail
quelle
Beachten Sie, dass es zu Beginn der Konzeption von Windows (NT) kein UTF-8 gab. Daher war UCS-2 eine wirklich vernünftige Wahl (und es war unmöglich, danach zu wechseln, außer zu UTF-16).
Joey
2
Der Grund dafür ist, dass das UTF-8-Gebietsschema einige Funktionen unterbrechen kann (ein mögliches Beispiel ist _mbsrev), da sie so geschrieben wurden, dass sie Multibyte-Codierungen annehmen, die nicht mehr als 2 Byte pro Zeichen verwenden. Bisher wurden also Seiten mit mehr Byte codiert, z. B. GB 18030 (cp54936) ) und UTF-8 konnten nicht als Gebietsschema festgelegt werden. . Aber zumindest ist es jetzt möglich, das UTF-8-Gebietsschema unter Windows 10
phuclv