Aktualisieren:

Aktualisieren:

Wir wissen, dass es eine Anwendung namens AppLocale gibt, die die Codepage von Nicht-Unicode-Anwendungen ändern kann, um Probleme bei der Textanzeige zu lösen.

Aber es gibt ein Programm, dessenCodepage für die rechte Anzeigeist UTF-8, was bedeutetsein Text sollte als UTF-8 angezeigt werden, sondern Windowszeigt es als native Codepage anund macht den Text unlesbar. Das scheint komisch, weil es fast alle Länder und Regionen gibt, aber ohne UTF-8. Ich denke, es ist ein Fehler, weil die Programmierer möglicherweise Englisch verwenden und das Testen von Problemen bei der Anzeige nicht-englischer Texte ignorieren. Ich glaube nicht, dass der Hersteller das beheben wird, und ich möchte es selbst beheben.

Ist es möglich, Nicht-Unicode-Ausgaben mithilfe von Software wie AppLocale als UTF-8 einzustellen? Standardmäßige Nicht-Unicode-Ausgaben sind native Codepages. Wie kann ich die native Codepage auf UTF-8 einstellen?

Antwort1

Bisher war dies nicht möglich, da

Microsoft gab an, dass ein UTF-8-Gebietsschema einige Funktionen beschädigen könnte (ein mögliches Beispiel ist _mbsrev), da diese so geschrieben wurden, dass bei Multibyte-Kodierungen nicht mehr als 2 Byte pro Zeichen verwendet werden. Daher konnten Codepages mit mehr Byte wie GB 18030 (cp54936) und UTF-8 bislang nicht als Gebietsschema festgelegt werden.

https://en.wikipedia.org/wiki/Unicode_in_Microsoft_Windows#UTF-8

Es gibt jedoch eine„Beta: Verwenden Sie Unicode UTF-8 für weltweite Sprachenunterstützung“Kontrollkästchen seit Windows 10 Insider Build 17035 zum Einstellen der lokalen Codepage auf UTF-8

Beta: Verwenden Sie Unicode UTF-8 für weltweite Sprachenunterstützung

Siehe auch

Allerdings ist der Support zu diesem Zeitpunkt noch fehlerhaft


Aktualisieren:

Microsoft hat außerdem die Möglichkeit hinzugefügt, dass Programme das UTF-8-Gebietsschema verwenden können, ohne das oben genannte UTF-8-Beta-Flag setzen zu müssen. Sie können das/execution-charset:utf-8oder/utf-8Optionen beim Kompilieren mit MSVC oder Festlegen der ActiveCodePage-Eigenschaft in appxmanifest

Sie können das UTF-8-Gebietsschema auch in älteren Windows-Versionen verwenden, indem Sie es mit der entsprechenden C-Laufzeit verknüpfen.

Ab Windows 10 Build 17134 (Update April 2018) unterstützt die Universal C Runtime die Verwendung einer UTF-8-Codepage. Dies bedeutet, dass charan C-Runtime-Funktionen übergebene Zeichenfolgen Zeichenfolgen in der UTF-8-Kodierung erwarten. Um den UTF-8-Modus zu aktivieren, verwenden Sie bei Verwendung von „UTF-8“ als Codepage setlocale. Beispielsweise setlocale(LC_ALL, ".utf8")wird die aktuelle standardmäßige Windows-ANSI-Codepage (ACP) für das Gebietsschema und UTF-8 für die Codepage verwendet.

...

Um diese Funktion auf einem Betriebssystem vor Windows 10, wie z. B. Windows 7, zu verwenden, müssen SieApp-lokale Bereitstellungoder statisch verknüpfen, indem Sie Version 17134 des Windows SDK oder höher verwenden. Für Windows 10-Betriebssysteme vor 17134 wird nur statisches Verknüpfen unterstützt.

UTF-8-Unterstützung

Antwort2

Nach dem, was ich über Microsoft gelesen habeAppLocale-Tool auf Wikipedia, das Tool kann Ihre Codepage NICHT in UTF-8 ändern.Es funktioniert nur mit Nicht-Unicode-Anwendungen, aber UTF-8 ist Teil des Unicode-Standards.

Im Hintergrund unterscheidet sich die Unicode-Verarbeitung von Nicht-ASCII-Zeichen erheblich von der Nicht-Unicode-Verarbeitung. Obwohl es also möglich ist, zwischen Nicht-Unicode-Codepages zu wechseln (dies macht AppLocale), ist es NICHT möglich, zwischen Unicode und Nicht-Unicode zu wechseln, ohne dass der Hersteller der Anwendung Änderungen vornimmt.

Antwort3

Nur um es hier zu erwähnen: In Windows 10 17133 gibt es jetzt eine Beta-Option zur Verwendung von UTF-8 für weltweiten Support. Bei Nicht-Unicode-Programmen hilft sie mir derzeit jedoch nicht, aber sie wird in dem Popup angezeigt, in dem ich das Gebietsschema für Nicht-Unicode-Programme ändern kann.

Vielleicht arbeiten sie an einer Lösung, damit die Notwendigkeit, das Gebietsschema für Nicht-Unicode-Programme ändern zu müssen, nicht mehr besteht.

verwandte Informationen