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. Start -> Run -> regedit
  2. 转到 [HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\Autorun]
  3. 更改值为 chcp 65001 3.
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

寄存器文件:

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe]
"CodePage"=dword:fde9
  1. 值必须为十六进制](//stackoverflow.com/a/34005301)
  2. 最上面一行必须与 完全相同 3. HKEYCURRENTUSER 不能被缩写为
  3. 值可以是 dec 或 hex
  4. %SystemRoot%必须被转义
  5. REG/DWORD不能省略

PowerShell:

REG ADD HKCU\Console\%SystemRoot^%_system32_cmd.exe /v CodePage /t REG_DWORD /d 65001
  1. 值可以是十进制或十六进制 2.在PowerShell 3+的情况下,假定-Type DWord
  2. 可以使用ni -> New-Item
  3. 可以使用sp -> Set-ItemProperty 5.可以使用-ea 0 -> -ErrorAction Ignore

Cygwin:

New-Item -ErrorAction Ignore HKCU:\Console\%SystemRoot%_system32_cmd.exe
Set-ItemProperty HKCU:\Console\%SystemRoot%_system32_cmd.exe CodePage 65001
  1. 值可以是十进制或十六进制的 2.可以使用`/ -> 寄存器文件:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe]
"CodePage"=dword:fde9
  1. 值必须为十六进制]&003
  2. 最上面一行必须与 完全相同 3. HKEYCURRENTUSER 不能被缩写为
  3. 值可以是 dec 或 hex
  4. %SystemRoot%必须被转义
  5. REG/DWORD不能省略

PowerShell:

REG ADD HKCU\Console\%SystemRoot^%_system32_cmd.exe /v CodePage /t REG_DWORD /d 65001
  1. 值可以是十进制或十六进制 2.在PowerShell 3+的情况下,假定-Type DWord
  2. 可以使用ni -> New-Item
  3. 可以使用sp -> Set-ItemProperty 5.可以使用-ea 0 -> -ErrorAction Ignore

Cygwin:

New-Item -ErrorAction Ignore HKCU:\Console\%SystemRoot%_system32_cmd.exe
Set-ItemProperty HKCU:\Console\%SystemRoot%_system32_cmd.exe CodePage 65001
  1. 值可以是十进制或十六进制的 2.可以使用
  2. 可以使用HKCU -> HKEY_CURRENT_USER
  3. 可以使用user -> HKEY_CURRENT_USER
  4. 可以使用&007
10
10
10
2019-05-11 14:44:42 +0000

在Windows 10的1809版本中,我通过进入系统的Language settings,选择Administrative language settings,点击Change system locale...并勾选Beta: Use Unicode UTF-8 for worldwide language support框,然后重新启动我的电脑,就可以永久解决这个问题。

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图标,选择 “更多”>“打开文件位置"。右键单击Powershell快捷方式,选择 "属性”
  2. 在 “目标 "命令行的末尾添加以下内容:-NoExit -Command "chcp 1252"

要高兴。4.除非你没有其他的选择,否则不要大惊小怪地对待Windows注册表。