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

Измените кодовую страницу по умолчанию консоли Windows на UTF-8

В настоящее время я работаю под управлением Windows 7 x64 и обычно хочу, чтобы все консольные инструменты работали с UTF-8, а не с кодовой страницей по умолчанию 850.

Запуск chcp 65001 в командной строке перед использованием любых утилит помогает, но есть ли способ установить кодовую страницу по умолчанию?

Обновление:

Изменение значения HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage\OEMCP на 65001 в моем случае делает систему неспособной к загрузке.

Предлагаемое изменение HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\Autorun на @chcp 65001>nul отлично подошло мне на пользу. (спасибо Ole_Brun ).

Ответы (6)

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

Чтобы изменить кодовую страницу только для консоли, сделайте следующее:

  1. Запустить -> Запустить -> regedit
  2. Перейти к [HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\Autorun]
  3. Измените значение на chcp 65001
41
41
41
2013-12-07 15:36:03 +0000

Лично мне не нравится менять реестр. Это может вызвать много проблем. Я создал пакетный файл:

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

Я сохранил его на C:\Windows\System32 как switch.bat.

Я создал ссылку для cmd.exe на рабочем столе.

В свойствах ярлыка cmd, изменил пункт назначения на: C:\Windows\System32\cmd.exe /k switch

Voilá, когда мне нужно набрать UTF-8, я использую эту ссылку.

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

Reg файл:

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe]
"CodePage"=dword:fde9
  1. Значение должно быть в шестнадцатеричной форме
  2. Верхняя строка должна быть включена точно так же, как
  3. HKEY_CURRENT_USER не может быть сокращено
  4. dword не может быть опущено
  • *

Command Prompt:

REG ADD HKCU\Console\%SystemRoot^%_system32_cmd.exe /v CodePage /t REG_DWORD /d 65001
  1. Значение может быть в деках или гексах
  2. %SystemRoot% должно быть освобождено
  3. REG_DWORD нельзя опустить

PowerShell:

New-Item -ErrorAction Ignore HKCU:\Console\%SystemRoot%_system32_cmd.exe
Set-ItemProperty HKCU:\Console\%SystemRoot%_system32_cmd.exe CodePage 65001
  1. Значение может быть в деках или шестнадцатеричной
  2. -Type DWord принимается с PowerShell 3+
  3. Можно использовать ni -> New-Item
  4. Может использовать sp -> Set-ItemProperty
  5. Может использовать -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. Значение может быть в деках или гексах
  2. Можно использовать `/ -> Reg файл:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe]
"CodePage"=dword:fde9
  1. [ Значение должно быть в шестнадцатеричной форме ] &003
  2. Верхняя строка должна быть включена точно так же, как
  3. HKEY_CURRENT_USER не может быть сокращено
  4. dword не может быть опущено
  • *

Command Prompt:

REG ADD HKCU\Console\%SystemRoot^%_system32_cmd.exe /v CodePage /t REG_DWORD /d 65001
  1. Значение может быть в деках или гексах
  2. %SystemRoot% должно быть освобождено
  3. REG_DWORD нельзя опустить

PowerShell:

New-Item -ErrorAction Ignore HKCU:\Console\%SystemRoot%_system32_cmd.exe
Set-ItemProperty HKCU:\Console\%SystemRoot%_system32_cmd.exe CodePage 65001
  1. Значение может быть в деках или шестнадцатеричной
  2. -Type DWord принимается с PowerShell 3+
  3. Можно использовать ni -> New-Item
  4. Может использовать sp -> Set-ItemProperty
  5. Может использовать -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. Значение может быть в деках или гексах
  2. Можно использовать
  3. Может использовать HKCU -> HKEY_CURRENT_USER
  4. Может использовать user -> HKEY_CURRENT_USER
10
10
10
2019-05-11 14:44:42 +0000

В сборке 1809 года Windows 10 мне удалось навсегда решить эту проблему, перейдя к системной Language settings, выбрав Administrative language settings, нажав Change system locale... и отметив Beta: Use Unicode UTF-8 for worldwide language support, а затем перезапустив свой pc.

. Таким образом, это применимо ко всем приложениям, даже тем, которые я не запускаю из командной строки! (Что для меня было необходимо, так как я пытался редактировать код Agda из Atom).

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

Это можно сделать, создав профиль PowerShell и добавив в него команду “chcp 65001 >$null”:

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

Это не требует редактирования реестра и, в отличие от редактирования ярлыка, будет работать, если PowerShell запускается в определенной папке с помощью контекстного меню Проводника Windows.

5
5
5
2016-11-02 21:11:54 +0000

Команда для изменения кодовой страницы - chcp <codepage>. Пример: chcp 1252. Вы должны ввести ее в окно Powershell. Чтобы избежать хлопот, связанных с ее вводом каждый раз (если вам всегда приходится менять кодовую страницу), вы можете добавить ее в командную строку программы. Для этого выполните следующие шаги:

  1. Щелкните правой кнопкой мыши на иконку Powershell в меню Start и выберите “More” > “Open file Location”.
  2. Щелкните правой кнопкой мыши на ярлыке Powershell и выберите “Свойства”.
  3. Добавьте в конец командной строки “Target” следующее: -NoExit -Command "chcp 1252"

Be happy. Не суетитесь с реестром Windows, если у вас нет другой опции.

Похожие вопросы

3
19
10
28
7