Windows 콘솔의 기본 코드 페이지를 UTF-8로 변경


123

현재 Windows 7 x64를 실행 중이며 일반적으로 모든 콘솔 도구가 기본 코드 페이지 850이 아닌 UTF-8에서 작동하기를 원합니다.

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 덕분에 )


목적에 맞는 솔루션은 Windows의 find.exe (Android SDK 빌드에 문제를 일으킬 수 있음)를 손상시킬 수 있습니다. superuser.com/questions/176737/…
J Rao

흠, 내가 chcp 65001을 사용하면 dir을 할 때 콘솔 창이 충돌하지만 / u 플래그로 cmd.exe를 시작하는 데 도움이됩니다 (nb : chcp.com 출력에 반영되지 않으므로 유니 코드를 사용합니다)
eckes

10
인코딩이 65001과 같이 지원되지 않는 멀티 바이트 코드 페이지로 설정되면 Windows 콘솔에 버그가 있습니다. Win32 WriteFile / ReadFile API의 출력 카운트를 사용하는 모든 소프트웨어는 잘못된 결과를 얻게되고 결과적으로 MSVCRT와 같은 방식으로 빌드됩니다. stdlib를 구현하면 맹 글링 / 반복 출력이 생성되고 비 ASCII와 직면 할 때 입력이 중단됩니다. MS가 그것을 고칠 때까지 (그리고 그 일이 일어나지 않고 수십 년 전) 콘솔 코드 페이지를 65001로 바꾸는 것은 매우 나쁜 생각 이다.
bobince

2
AWindows 기능 버전 사용 이 중단되었습니다. W버전 을 사용하려면 모든 코드를 포팅해야합니다 .
데미

1
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage\OEMCP비 유니 코드 (non-unif) 환경에 대한 대체물로 사용되며, 정의상 논란의 여지가있는 것처럼 '유니 코드'로 강제 설정하려고합니다. 부팅시 일부 시스템 항목이 작동하려면 유니 코드가 아닌 문자 집합에 의존하기 때문에 Windows가 중단 될 수 있습니다.
venimus

답변:


99

콘솔의 코드 페이지 만 변경하려면 다음을 수행하십시오.

  1. 시작-> 실행-> regedit
  2. 이동 [HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\Autorun]
  3. 값을 chcp 65001

1
@Regent 문제에서 당신이 당신을 위해 일했다고 언급 한 레지스트리 값 @chcp 65001>nulchcp 65001입니다. 이 둘의 차이점은 무엇입니까?
galacticninja

7
@galacticninja은 단순히 입력 chcp 65001하면 열려있는 모든 명령 프롬프트가 '활성 코드 페이지 : 65001'을 인쇄하는 동안 @chcp 65001>nul출력을 방지합니다.
Regent

7
AutorunWindows 8.1에서 나에게 존재하지 않습니다.
kleinfreund

2
@kleinfreund @Luke : Autorun이 없으면, @chcp 65001>nul
Dacto

1
@ Dr.jacky 그들이 무슨 뜻인지 정확히 모르겠습니다. 방금 OP의 질문에 대답했습니다. 당신이 그것을 해야할지 아닌지는 다른 질문입니다. 파이썬에는 약간의 문제가있을 수 있으므로 적어도 코드 페이지를 65001로 설정하기 전에 확인해야 할 수도 있습니다.
Nils Magne Lunde

38

개인적으로 레지스트리를 변경하는 것을 좋아하지 않습니다. 많은 문제가 발생할 수 있습니다. 배치 파일을 만들었습니다.

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

C:\Windows\System32switch.bat로 저장했습니다 .

바탕 화면에 cmd.exe에 대한 링크를 만들었습니다.

cmd 바로 가기의 속성에서 대상을 다음과 같이 변경하십시오. C:\Windows\System32\cmd.exe /k switch

Voilá, UTF-8로 입력해야 할 때이 링크를 사용합니다.


7
Active code page: 65001stdout으로 인쇄 됩니다. 따라서 이와 같은 작업을 수행하는 경우 CHCP 65001 && mycommand.exe처음에 코드 페이지가 인쇄됩니다. 당신은CHCP 65001 >nul && mycommand.exe
frumbert

32

등록 파일 :

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe]
"CodePage"=dword:fde9
  1. 값은 16 진수 여야합니다.
  2. 최상위 줄은 그대로 포함해야합니다
  3. HKEY_CURRENT_USER는 축약 될 수 없습니다
  4. dword는 생략 할 수 없습니다

명령 프롬프트:

REG ADD HKCU\Console\%SystemRoot^%_system32_cmd.exe /v CodePage /t REG_DWORD /d 65001
  1. 값은 12 진수 또는 16 진수 일 수 있습니다.
  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. 값은 12 진수 또는 16 진수 일 수 있습니다.
  2. -Type DWord PowerShell 3 이상에서 가정
  3. 사용할 수 있습니다 ni -> New-Item
  4. 사용할 수 있습니다 sp -> Set-ItemProperty
  5. 사용할 수 있습니다 -ea 0 -> -ErrorAction Ignore

사이 그윈 :

regtool add '\HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe'
regtool set '\HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe\CodePage' 65001
  1. 값은 12 진수 또는 16 진수 일 수 있습니다.
  2. 사용할 수 있습니다 / -> \
  3. 사용할 수 있습니다 HKCU -> HKEY_CURRENT_USER
  4. 사용할 수 있습니다 user -> HKEY_CURRENT_USER

Windows 10에서는 작동하지 않았습니다. 작동하는 것은 chcp 명령을 통해 코드 페이지를 설정하는 자동 실행을 만드는 것입니다 (예 :
George

편집이 시간이 초과되기 전에 내가 말하고자하는 것은 chcp 65001자동 실행 명령 파일의 문제였습니다 .
George

문제는 CMD에서만 작동하지만 콘솔 자체에서는 작동하지 않습니다.
AnrDaemon

5

코드 페이지를 변경하는 명령은 chcp <codepage>입니다. 예 : chcp 1252. Powershell 창에 입력해야합니다. 매번 입력하는 번거 로움을 피하기 위해 (코드 페이지를 항상 변경해야하는 경우) 프로그램의 명령 줄에 추가 할 수 있습니다. 이렇게하려면 다음 단계를 수행하십시오.

  1. 시작 메뉴에서 Powershell 아이콘을 마우스 오른쪽 단추로 클릭하고 "추가"> "파일 위치 열기"를 선택하십시오.
  2. Powershell 바로 가기를 마우스 오른쪽 단추로 클릭하고 "속성"을 선택하십시오.
  3. "Target"명령 행 끝에 다음을 추가하십시오. -NoExit -Command "chcp 1252"

행복하세요 다른 옵션이 없으면 Windows 레지스트리를 소홀히하지 마십시오.


이것은 나를 위해 완벽하게 작동했습니다. -NoExit -Command "chcp 1252 > null"또한 처음에 선택한 코드 페이지에 대한 메시지가 생략됩니다.
CodeMonkey

5

PowerShell 프로필을 만들고 "chcp 65001> $ null"명령을 추가하면됩니다.

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

레지스트리를 편집 할 필요가 없으며 바로 가기 편집과 달리 Windows 탐색기 상황에 맞는 메뉴를 사용하여 특정 폴더에서 PowerShell을 시작한 경우 작동합니다.


1
@PimpJuiceIT, no ..이 답변의 첫 번째 줄을 참조하십시오.
Dacto

4

1809 Windows 10 빌드에서 시스템으로 이동 Language settings하여을 선택 하고 상자를 Administrative language settings클릭 한 후 확인란을 선택한 다음 PC를 다시 시작 하여이 문제를 영구적으로 해결했습니다 .Change system locale...Beta: Use Unicode UTF-8 for worldwide language support

이 방법은 모든 응용 프로그램, 심지어 명령 프롬프트에서 시작하지 않은 응용 프로그램에도 적용됩니다!
(Atom에서 Agda 코드를 편집하려고 시도한 이후 나에게 꼭 필요한 것이 었습니다.)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.