В настоящее время я использую 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 )
A
версий функций Windows нарушено. Весь код должен быть перенесен для использованияW
версий.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage\OEMCP
используются в качестве запасного варианта для не-юникода (не UTF) сред, очевидно , вы пытаетесь заставить его в «Юникод», как вы видите , это controversal по определению. Windows зависает, вероятно, потому что некоторые системные вещи при загрузке зависят от работы не-Unicode-кодировки.Ответы:
Чтобы изменить кодовую страницу только для консоли, выполните следующие действия:
[HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\Autorun]
chcp 65001
источник
@chcp 65001>nul
, в то время как в этом принятом ответе это такchcp 65001
. Каковы различия между этими двумя?chcp 65001
приведет к тому, что в каждой открытой командной строке будет напечатано «Активная кодовая страница: 65001», а@chcp 65001>nul
всякие выходные данные будут запрещены.Autorun
нет для меня под Windows 8.1.Autorun
нет, вы можете добавить новое@chcp 65001>nul
Лично мне не нравится смена реестра. Это может вызвать много проблем. Я создал командный файл:
Я сохранил
C:\Windows\System32
как switch.bat.Я создал ссылку для cmd.exe на рабочем столе.
В свойствах ярлыка cmd изменил место назначения на:
C:\Windows\System32\cmd.exe /k switch
Вуаля, когда мне нужно набрать UTF-8, я использую эту ссылку.
источник
Active code page: 65001
на стандартный вывод. Так что если вы делаете что-то вродеCHCP 65001 && mycommand.exe
этого, вы получите распечатанную кодовую страницу в начале. Вы должныCHCP 65001 >nul && mycommand.exe
Рег файл:
Командная строка:
PowerShell:
-Type DWord
предполагается с PowerShell 3+ni -> New-Item
sp -> Set-ItemProperty
-ea 0 -> -ErrorAction Ignore
Cygwin:
/ -> \
HKCU -> HKEY_CURRENT_USER
user -> HKEY_CURRENT_USER
источник
chcp 65001
в командном файле автозапуска. См. Stackoverflow.com/a/17405182/315083Команда для изменения кодовой страницы есть
chcp <codepage>
. Пример:chcp 1252
. Вы должны напечатать это в окне Powershell. Чтобы избежать необходимости набирать его каждый раз (если вам всегда приходится менять кодовую страницу), вы можете добавить его в командную строку программы. Для этого выполните следующие действия:-NoExit -Command "chcp 1252"
Будь счастлив. Не суетитесь с реестром Windows, если у вас нет другого выбора.
источник
-NoExit -Command "chcp 1252 > null"
также пропускает сообщение о выбранной кодовой странице в начале.Это можно сделать, создав профиль PowerShell и добавив в него команду «chcp 65001> $ null»:
Это не требует редактирования реестра и, в отличие от редактирования ярлыка, будет работать, если PowerShell запускается в определенной папке с помощью контекстного меню проводника Windows.
источник
В 1809 сборке Windows 10 мне удалось решить эту проблему навсегда, перейдя в систему
Language settings
, выбравAdministrative language settings
, нажавChange system locale...
и установивBeta: Use Unicode UTF-8 for worldwide language support
флажок, а затем перезагрузив мой компьютер.Таким образом, это относится ко всем приложениям, даже к тем, которые я не запускаю из командной строки!
(Что было необходимо для меня, так как я пытался редактировать код Agda из Atom.)
источник