Question Changer la page de code par défaut de la console Windows en UTF-8


Actuellement, j'utilise Windows 7 x64 et je souhaite que tous les outils de la console fonctionnent avec UTF-8 plutôt qu'avec la page de code par défaut 850.

Fonctionnement chcp 65001 dans l'invite de commande avant d'utiliser des outils, cela aide, mais y a-t-il un moyen de définir la page de code par défaut?

Mettre à jour:

En changeant HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage\OEMCP valeur à 65001 semble rendre le système incapable de démarrer dans mon cas.

Changement proposé de HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\Autorun à @chcp 65001>nul bien servi pour mon but. (grâce à Ole_Brun)


98
2018-04-12 10:42


origine


Notez que la solution proposée pourrait casser le fichier find.exe de Windows (qui causerait des problèmes avec la version du SDK Android): superuser.com/questions/176737/ - J Rao
Hm, quand j'utilise chcp 65001, mes fenêtres de console se bloquent quand je fais des répertoires, mais il est utile de simplement lancer cmd.exe avec le drapeau / u (nb: il utilise unicode car il n'est pas reflété dans la sortie de chcp.com) - eckes
L'utilisation de la page de code UTF-8 rompt également la more commande (donne le message d'erreur trompeur Not enough memory.) Ouverture de l'invite de commande avec le /U commutateur ne aide pas. - Synetech
La console Windows est criblée de bogues lorsque le codage est défini sur une page de code multi-octets non prise en charge telle que 65001. Tout logiciel utilisant les compteurs de sortie des API Win32 WriteFile / ReadFile obtiendra des résultats incorrects. L'implémentation du fichier stdlib produira une sortie mutilée / répétée et restera en entrée lorsqu'il sera confronté à un format non-ASCII. Jusqu'à ce que MS parvienne à régler le problème - et cela depuis des décennies sans que cela se produise - la page de code de la console s'est transformée en 65001 à l'échelle mondiale. extraordinairement mauvaise idée. - bobince
Toute utilisation de la A les versions des fonctions Windows sont cassées.  Tout le code doit être porté pour utiliser le W versions. - Demi


Réponses:


Pour modifier la page de code de la console uniquement, procédez comme suit:

  1. Démarrer -> Exécuter -> regedit
  2. Aller à [HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\Autorun]
  3. Changer la valeur en chcp 65001

78
2018-04-12 12:22



Sachez que changer la page de codes n'affectera pas seulement la console. Pour que cela ne s'applique qu'à la console, vous pouvez mettre chcp 65001 dans le HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\Autorun. - Nils Magne Lunde
Changer étonnamment le OEMCP paramètre de Registre a rendu mon système incapable de démarrer, donc j'ai dû utiliser la récupération du système pour restaurer l'état de fonctionnement. Autorun fait le tour, cependant. - Regent
@Regent: Si cette solution rend votre système impossible à démarrer, pourquoi l'avez-vous marqué comme accepté, alors? - Tim Pietzcker
@galacticninja mettant simplement chcp 65001 provoquera chaque invite de commande ouverte à imprimer «page de code active: 65001» tout en @chcp 65001>nul empêchera toute sortie. - Regent
Autorun n'est pas présent pour moi sous Windows 8.1. - kleinfreund


Je n'aime pas changer le système. Cela crée beaucoup de problèmes pour moi. J'ai créé un fichier batch:

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

J'ai enregistré dans C: \ Windows \ System32 comme switch.bat.

J'ai créé un lien pour cmd.exe sur le bureau.

Dans les propriétés de cmd, changez la destination pour: C:\Windows\System32\cmd.exe /k switch

Voilá, quand je dois taper UTF-8, j'utilise ce lien.


31
2017-12-07 15:36



Notez qu'il imprimera Active code page: 65001 à stdout. Donc, si vous faites quelque chose comme CHCP 65001 && mycommand.exe Vous obtiendrez alors la page de codes imprimée au début. Tu dois CHCP 65001 >nul && mycommand.exe - frumbert


Fichier reg:

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe]
"CodePage"=dword:fde9
  1. La valeur doit être en hexadécimal
  2. La ligne supérieure doit être incluse exactement telle quelle
  3. HKEY_CURRENT_USER ne peut pas être abrégé
  4. dword ne peut être omis

Invite de commandes:

REG ADD HKCU\Console\%SystemRoot^%_system32_cmd.exe /v CodePage /t REG_DWORD /d 65001
  1. La valeur peut être en déc ou en hexadécimal
  2. % SystemRoot% doit être échappé
  3. REG_DWORD ne peut pas être omis

PowerShell:

New-Item -ErrorAction Ignore HKCU:\Console\%SystemRoot%_system32_cmd.exe
Set-ItemProperty HKCU:\Console\%SystemRoot%_system32_cmd.exe CodePage 65001
  1. La valeur peut être en déc ou en hexadécimal
  2. -Type DWord est supposé avec PowerShell 3+
  3. Peut utiliser ni -> New-Item
  4. Peut utiliser sp -> Set-ItemProperty
  5. Peut utiliser -ea 0 -> -ErrorAction Ignore

Cygwin:

regtool add '\HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe'
regtool set '\HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe\CodePage' 65001
  1. La valeur peut être en déc ou en hexadécimal
  2. Peut utiliser / -> \
  3. Peut utiliser HKCU -> HKEY_CURRENT_USER
  4. Peut utiliser user -> HKEY_CURRENT_USER

25
2018-06-13 20:39





La commande pour changer la page de code est chcp <codepage>. Exemple: chcp 1252. Vous devriez le taper dans une fenêtre Powershell. Pour éviter d'avoir à le taper à chaque fois (si vous devez toujours changer la page de codes), vous pouvez l'ajouter à la ligne de commande du programme. Pour ce faire, procédez comme suit:

  1. Cliquez-droit sur l'icône Powershell dans le menu Démarrer et choisissez "Plus"> "Ouvrir l'emplacement du fichier".
  2. Cliquez avec le bouton droit sur le raccourci Powershell et sélectionnez "Propriétés".
  3. Ajoutez ce qui suit à la fin de la ligne de commande "Target": -NoExit -Command "chcp 1252"

Soyez heureux. Ne vous inquiétez pas avec Windows Registry à moins que vous n'ayez aucune autre option.


3
2017-11-02 21:11



Celui-ci a parfaitement fonctionné pour moi. -NoExit -Command "chcp 1252 > null" omet également le message sur la page de code sélectionnée au début. - CodeMonkey


Cela peut être fait en créant un profil PowerShell et en ajoutant la commande "chcp 65001> $ null":

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

Cela ne nécessite pas de modifier le Registre et, contrairement à l'édition d'un raccourci, fonctionne si PowerShell est démarré dans un dossier spécifique à l'aide du menu contextuel de l'Explorateur Windows.


1
2017-09-03 20:56



Donc, c'est totalement différent de l'autre réponse qui suggère d'utiliser chcp 65001? - Pimp Juice IT