Momentan verwende ich Windows 7 x64 und möchte, dass alle Konsolentools mit UTF-8 und nicht mit der Standard-Codepage 850 arbeiten.
Das Ausführen chcp 65001
in der Eingabeaufforderung vor der Verwendung von Tools hilft, aber gibt es eine Möglichkeit, die Codepage als Standard festzulegen?
Aktualisieren:
Wenn Sie den HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage\OEMCP
Wert so 65001
ändern, dass er angezeigt wird , kann das System in meinem Fall nicht mehr gestartet werden.
Vorgeschlagene Änderung von HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\Autorun
zu @chcp 65001>nul
diente gerade gut für meinen Zweck. (Danke an Ole_Brun )
A
Versionen der Windows-Funktionen ist fehlerhaft. Der gesamte Code muss portiert werden, um dieW
Versionen zu verwenden.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage\OEMCP
wird als Fallback für Nicht-Unicode-Umgebungen (Non-Utf) verwendet. Sie versuchen offensichtlich, einen "Unicode" zu erzwingen, da dies per Definition umstritten ist. Windows hängt sich wahrscheinlich auf, weil einige Systemfunktionen beim Booten davon abhängen, dass ein Nicht-Unicode-Zeichensatz funktioniert.Antworten:
Gehen Sie wie folgt vor, um die Codepage nur für die Konsole zu ändern:
[HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\Autorun]
chcp 65001
quelle
@chcp 65001>nul
, während dies in dieser akzeptierten Antwort der Fall istchcp 65001
. Was sind die Unterschiede zwischen den beiden?chcp 65001
wird bei jeder geöffneten Eingabeaufforderung "Active code page: 65001" gedruckt, während@chcp 65001>nul
die Ausgabe verhindert wird.Autorun
ist für mich unter Windows 8.1 nicht vorhanden.Autorun
nicht vorhanden ist, können Sie ein Add New String Value mit dem Inhalt@chcp 65001>nul
Persönlich mag ich es nicht, die Registrierung zu ändern. Dies kann viele Probleme verursachen. Ich habe eine Batch-Datei erstellt:
Ich habe
C:\Windows\System32
als switch.bat gespeichert.Ich habe einen Link für cmd.exe auf dem Desktop erstellt.
Ändern Sie in den Eigenschaften der cmd-Verknüpfung das Ziel in:
C:\Windows\System32\cmd.exe /k switch
Voilá, wenn ich UTF-8 eingeben muss, benutze ich diesen Link.
quelle
Active code page: 65001
auf Standard gedruckt wird . Wenn Sie also so etwas tunCHCP 65001 && mycommand.exe
, wird die Codepage zu Beginn ausgedruckt. Sie müssenCHCP 65001 >nul && mycommand.exe
Reg-Datei:
Eingabeaufforderung:
Power Shell:
-Type DWord
wird mit PowerShell 3+ vorausgesetztni -> New-Item
sp -> Set-ItemProperty
-ea 0 -> -ErrorAction Ignore
Cygwin:
/ -> \
HKCU -> HKEY_CURRENT_USER
user -> HKEY_CURRENT_USER
quelle
chcp 65001
einer Autorun-Befehlsdatei. Siehe stackoverflow.com/a/17405182/315083Der Befehl zum Ändern der Codepage lautet
chcp <codepage>
. Beispiel:chcp 1252
. Sie sollten es in ein Powershell-Fenster eingeben. Um das mühsame Eingeben zu vermeiden (wenn Sie die Codepage immer ändern müssen), können Sie sie an die Befehlszeile des Programms anhängen. Gehen Sie dazu folgendermaßen vor-NoExit -Command "chcp 1252"
Sei glücklich. Machen Sie keine Probleme mit der Windows-Registrierung, es sei denn, Sie haben keine andere Option.
quelle
-NoExit -Command "chcp 1252 > null"
Lässt auch die Nachricht über die ausgewählte Codepage am Anfang aus.Dies kann erreicht werden, indem ein PowerShell-Profil erstellt und der Befehl "chcp 65001> $ null" hinzugefügt wird:
Dies erfordert keine Bearbeitung der Registrierung und funktioniert im Gegensatz zur Bearbeitung einer Verknüpfung, wenn PowerShell in einem bestimmten Ordner über das Kontextmenü von Windows Explorer gestartet wird.
quelle
In der 1809-Version von Windows 10 habe ich es geschafft, dieses Problem dauerhaft zu lösen, indem ich zum System gegangen bin, das Kontrollkästchen
Language settings
ausgewähltAdministrative language settings
, darauf geklickt und es dann neu gestartet habe.Change system locale...
Beta: Use Unicode UTF-8 for worldwide language support
Auf diese Weise gilt es für alle Anwendungen, auch für diejenigen, die ich nicht über eine Eingabeaufforderung starte!
(Was für mich notwendig war, da ich versuchte, Agda-Code von Atom aus zu bearbeiten.)
quelle