2011-04-12 10:42:07 +0000 2011-04-12 10:42:07 +0000
131
131

Cambiare la pagina del codice di default della console di Windows in UTF-8

Attualmente sto eseguendo Windows 7 x64 e di solito voglio che tutti gli strumenti della console funzionino con UTF-8 piuttosto che con la pagina del codice di default 850.

L'esecuzione di chcp 65001 nel prompt dei comandi prima dell'uso di qualsiasi strumento aiuta ma c'è un modo per impostare è come pagina di codice predefinita?

** Aggiornamento:**

Modifica del valore di HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage\OEMCP in 65001 sembra rendere il sistema incapace di avviarsi nel mio caso.

La modifica proposta di HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\Autorun in @chcp 65001>nul è servita proprio bene per il mio scopo. (grazie a Ole_Brun )

Risposte (6)

102
102
102
2011-04-12 12:22:32 +0000

Per modificare la codifica della sola console, procedere come segue:

  1. 1. Avviare -> Esegui -> regedit
  2. 2. Andare a [HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\Autorun]
  3. 3. Cambiare il valore in chcp 65001
41
41
41
2013-12-07 15:36:03 +0000

Personalmente, non mi piace cambiare il registro. Questo può causare molti problemi. Ho creato un file batch:

@ECHO OFF
REM change CHCP to UTF-8
CHCP 65001
CLS

Ho salvato a C:\Windows\System32 come switch.bat.

Ho creato un link per cmd.exe sul Desktop.

Nelle proprietà del collegamento cmd, ho cambiato la destinazione in: C:\Windows\System32\cmd.exe /k switch

Voilá, quando devo digitare UTF-8, uso questo link.

35
35
35
2015-06-13 20:39:21 +0000

File reg:

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe]
"CodePage"=dword:fde9
``` ```
REG ADD HKCU\Console\%SystemRoot^%_system32_cmd.exe /v CodePage /t REG_DWORD /d 65001
  1. Il valore deve essere in esadecimale
  2. La riga superiore deve essere inclusa esattamente come
  3. 3. HKEY_CURRENT_USER non può essere abbreviato
  4. dword non può essere omesso

Prompt di comando:

New-Item -ErrorAction Ignore HKCU:\Console\%SystemRoot%_system32_cmd.exe
Set-ItemProperty HKCU:\Console\%SystemRoot%_system32_cmd.exe CodePage 65001
  1. [ Il valore deve essere in hex ]
regtool add '\HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe'
regtool set '\HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe\CodePage' 65001

Il valore può essere in dec o hex 2. %SystemRoot% deve essere sfuggito 3. REG_DWORD non può essere omesso


PowerShell:

&001

  1. Il valore può essere in dec decimali o esagonali
  2. %SystemRoot% deve essere sfuggito
  3. REG_DWORD non può essere omesso

Il valore può essere in dec o hex 2. -Type DWord si assume con PowerShell 3+ 3. 3. Può usare ni -> New-Item 4. 4. Può usare sp -> Set-ItemProperty 5. Può usare -ea 0 -> -ErrorAction Ignore


Cygwin:

&001

  1. Il valore può essere in dec decimali o esadecimali. Il valore può essere in dec o hex
  2. 2. Può usare `/ -> File reg:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe]
"CodePage"=dword:fde9
``` ```
REG ADD HKCU\Console\%SystemRoot^%_system32_cmd.exe /v CodePage /t REG_DWORD /d 65001
  1. [ Il valore deve essere in esadecimale ]&003
  2. La riga superiore deve essere inclusa esattamente come
  3. 3. HKEY_CURRENT_USER non può essere abbreviato
  4. dword non può essere omesso

Prompt di comando:

New-Item -ErrorAction Ignore HKCU:\Console\%SystemRoot%_system32_cmd.exe
Set-ItemProperty HKCU:\Console\%SystemRoot%_system32_cmd.exe CodePage 65001
  1. [ Il valore deve essere in hex ]
regtool add '\HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe'
regtool set '\HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe\CodePage' 65001

Il valore può essere in dec o hex 2. %SystemRoot% deve essere sfuggito 3. REG_DWORD non può essere omesso


PowerShell:

&001

  1. Il valore può essere in dec decimali o esagonali
  2. %SystemRoot% deve essere sfuggito
  3. REG_DWORD non può essere omesso

Il valore può essere in dec o hex 2. -Type DWord si assume con PowerShell 3+ 3. 3. Può usare ni -> New-Item 4. 4. Può usare sp -> Set-ItemProperty 5. Può usare -ea 0 -> -ErrorAction Ignore


Cygwin:

&001

  1. Il valore può essere in dec decimali o esadecimali. Il valore può essere in dec o hex
  2. 2. Può usare
  3. 3. Può usare HKCU -> HKEY_CURRENT_USER
  4. Può usare user -> HKEY_CURRENT_USER
10
10
10
2019-05-11 14:44:42 +0000

Nella build 1809 di Windows 10 sono riuscito a risolvere definitivamente questo problema andando al Language settings del sistema, selezionando Administrative language settings, cliccando Change system locale... e spuntando la casella Beta: Use Unicode UTF-8 for worldwide language support e poi riavviando il mio pc.

In questo modo si applica a tutte le applicazioni, anche quelle che non partono da un prompt di comandi! (Il che era necessario per me, dato che stavo cercando di modificare il codice Agda da Atom).

6
6
6
2017-09-03 20:56:45 +0000

Questo può essere fatto creando un profilo PowerShell e aggiungendovi il comando “chcp 65001 >$null”:

PS> Set-ExecutionPolicy RemoteSigned
PS> New-Item -Path $Profile -ItemType file -Force
PS> notepad $Profile
``` &001 



Questo non richiede la modifica del registro e, a differenza della modifica di una scorciatoia, funzionerà se PowerShell viene avviato in una specifica cartella utilizzando il menu contestuale di Windows Explorer.
5
5
5
2016-11-02 21:11:54 +0000

Il comando per cambiare la codifica è chcp <codepage>. Esempio: chcp 1252. Dovreste digitarlo in una finestra di Powershell. Per evitare il fastidio di doverlo digitare ogni volta (se dovete sempre cambiare la pagina di codice), potete aggiungerlo alla riga di comando del programma. Per farlo, seguite questi passi:

  1. 1. Cliccare con il tasto destro del mouse sull'icona Powershell nel menu Start e scegliere “More” > “Open file Location”.
  2. Fare clic con il tasto destro del mouse sull'icona Powershell nel menu Start e scegliere “More” > “Open file Location”. 2. Fare clic con il tasto destro del mouse sulla scorciatoia di Powershell e selezionare “Proprietà”.
  3. Fare clic con il tasto destro del mouse sulla scorciatoia di Powershell e selezionare “Proprietà”. 3. Aggiungere quanto segue alla fine della riga di comando “Target”: -NoExit -Command "chcp 1252"

Sii felice. Non fare storie con il Registro di Windows, a meno che non si disponga di un'altra opzione.