본문 바로가기

Programming/C++

Notepad++에서 작성한 한글이 cmd에서 깨질 때

반응형

C나 C++에서 한글이 print 되도록 했는데, cmd에서 실행했을 때 깨져서 나온다면, 대부분 인코딩 불일치 때문이다.

 

Notepad++와 cmd 창의 인코딩 종류를 일치시켜주면 해결된다.

 

프로그램 코드에서는 "안녕"이 출력되도록 함
프로그램 실행시, "안녕"이라고 나와야는데 깨진 모습

 

해결 방법

  • Notepad++과 cmd창 모두 인코딩을 같은 것으로 맞춰준다. (예를 들어 UTF-8로 통일)

 

1. Notepad++에서의 인코딩 설정 방법

"인코딩" 메뉴에서 "UTF-8"이 설정되어 있는지 확인한다. 만약 안되어 있으면 "UTF-8"로 설정

 

2. cmd 창에서의 인코딩 설정

 

1) cmd 창을 연다

  • "윈도우키 + R" 키를 누르고, "실행" 창에서 "cmd"라고 타이핑 후 "확인" 버튼 누른다.

 

2) cmd 창에서 "chcp 65001"이라고 타이핑하고 엔터

  • chcp 명령은 "chnage code page"라는 명령
  • 65001은 "utf-8" 코드 페이지
    • utf-8: 65001
    • ANSI/한국어: 949
  • 만약 ANSI/한국어로 인코딩을 사용하고 싶다면, notepad++과 cmd 창의 인코딩을 ANSI/한국어로 통일하면 된다.

3) 위 2)번의 cmd 창에서 바꾼 코드 페이지를 저장  --> 이 부분 중요

  • cmd 창의 위 쪽 타이틀 부분으로 마우스 커서 이동 후 마우스 우클릭

  • 맨 밑 쪽에 있는 "속성"을 누르면, 현재 코드 페이지가 "65001"로 바뀐 것을 볼 수 있다. 이제 "확인" 버튼 누른다. 
    (이 과정을 꼭 해야 함. "확인"을 안 누르면 2) 번에서 chcp 65001 한 것이 영구 반영되지 않기에, 다시 cmd 실행했을 때 예전 인코딩 모드가 나타날 것임)

3) cmd창을 닫은 후, 다시 cmd 창을 열어서 "현재 코드 페이지"가 65001로 다시 나오는 가 확인

  • cmd 창의 타이틀바 쪽으로 마우스 이동 후 마우스 우클릭해서 "속성"
  • 만약 코드 페이지가 65001이 아니고 예전 코드 페이지로 돌아가 있으면, 아래 4번 수행

4) 레거시 콘솔 모드로 변경후, chcp 65001 다시 수행하고, "속성"에서 "확인" 클릭

  • cmd 창에서 "레거시 콘솔 사용" 체크하고 확인

  • cmd 창을 닫고, 다시 cmd 명령어로 cmd 수행 --> 아래와 같이 예전 구 버전의 콘솔 cmd 창이 뜰 것임

  • cmd 창에서 "chcp 65001"이라고 치고, 위 3) 번에서와 같이 "속성" 메뉴 들어가서 "확인" 클릭
  • 이렇게 하면 65001 페이지로 영구저장될 것이고, 이렇게 영구 저장된 상태면, 다시 "새로운 콘솔"을 사용해도 변경된 65001 페이지가 유지됨. 따라서, cmd 창의 "속성"을 열고 "레거시 콘솔 사용" 부분 체크를 해제하고 "확인"


위와 같이 인코딩을 맞춰주면, 제대로 한글이 출력될 것임

 

-끝-

반응형