이런 경우에는 단순히 Get-Content 명령을 바꿔서 해결되는 문제가 아닐 수 있습니다.
<C. 해결 방법: Windows 로캘에서 Unicode UTF-8 사용 설정>
제 경우에는 Windows의 로캘 설정에서 전 세계 언어 지원을 위해 Unicode UTF-8 사용 옵션을 켜고 나서 한글이 정상적으로 표시되었습니다.
설정 경로는 Windows 버전에 따라 약간 다를 수 있지만 대체로 아래 순서입니다.
설정 경로
☑ Windows 설정 열기 ☑ 시간 및 언어 선택 ☑ 언어 및 지역 선택(사실 언어탭으로 가는 모든 선택가능) ☑ 관련 설정에서 Windows 표시 언어설정 선택 ☑ 관리자 옵션 탭에서 시스템 로캘 변경 클릭 ☑ Beta: 전 세계 언어 지원을 위해 Unicode UTF-8 사용 체크 ☑ 확인 후 재부팅
또는 실행 창에서 바로 들어갈 수도 있습니다.
intl.cpl
Win + R을 누르고 intl.cpl을 실행하면 예전 제어판 방식의 국가 또는 지역 설정 창이 열립니다.
여기서 아래 경로로 들어갑니다.
제어판 방식 경로
☑ 국가 또는 지역 → 관리자 옵션 → 시스템 로캘 변경 → ☑ Beta: 전 세계 언어 지원을 위해 Unicode UTF-8 사용 체크
중요한 점은 재부팅을 한 번 해줘야 한다는 것입니다.
체크만 하고 PowerShell 창을 다시 열어도 바로 안 되는 경우가 있습니다. 시스템 로캘 변경은 Windows 전체 설정에 영향을 주기 때문에 재부팅 후 다시 확인하는 것이 좋습니다.
<D. 설정 후 확인 방법>
재부팅 후 PowerShell을 다시 열고 같은 로그 파일을 확인합니다.
Get-Content .\app.log -Tail 50 -Wait
이전에 깨져 보이던 한글이 정상적으로 보이면 해결된 것입니다.
필요하면 현재 코드페이지도 확인해 볼 수 있습니다.
chcp
UTF-8 코드페이지는 65001입니다.
Active code page: 65001
다만 여기서 중요한 것은 chcp 값만 보고 모든 문제가 해결되었다고 판단하면 안 된다는 점입니다.
PowerShell 한글 깨짐은 다음 세 가지가 함께 맞아야 안정적으로 해결됩니다.
확인해야 할 3가지
☑ PowerShell 또는 터미널이 한글을 표시할 수 있는 상태인지 ☑ 로그 파일이 어떤 인코딩으로 저장되어 있는지 ☑ Windows 시스템 로캘이 프로그램의 문자 처리 방식과 맞는지
이번 경우에는 1번만 바꿔서는 안 됐고, 3번인 Windows 시스템 로캘의 UTF-8 설정이 핵심이었습니다.
📌 이미지 삽입 위치 6: 설정 후 PowerShell에서 한글 로그가 정상 표시되는 화면
<E. 주의할 점>
이 설정은 PowerShell만 바꾸는 설정이 아니라 Windows의 비유니코드 프로그램용 언어 설정에 영향을 줄 수 있습니다.
대부분의 최신 프로그램은 큰 문제가 없지만, 아주 오래된 프로그램이나 특정 업무용 프로그램은 오히려 글자가 이상하게 보일 수도 있습니다.
특히 아래와 같은 프로그램을 사용한다면 설정 후 한 번 확인해 보는 것이 좋습니다.
확인해 볼 프로그램
☑ 오래된 회계/세무 프로그램 ☑ 예전 방식으로 만들어진 사내 업무 프로그램 ☑ 오래된 게임 또는 설치 프로그램 ☑ CP949 기준으로 동작하는 일부 국내 전용 프로그램 ☑ 특정 증권/금융 프로그램(키움영웅문CP949로확인ㅠ)
만약 다른 프로그램에서 문제가 생긴다면 같은 경로로 들어가서 체크를 해제하고 다시 재부팅하면 됩니다.
그래도 개발 환경이나 Python 로그, PowerShell 로그 확인이 주된 목적이라면 UTF-8 사용 설정이 훨씬 편한 경우가 많습니다.
<F. 그래도 안 된다면 추가로 볼 것>
Windows 로캘에서 UTF-8을 켰는데도 여전히 한글이 깨진다면 아래 항목도 같이 확인해 봅니다.
F1. 로그 파일 자체의 인코딩 확인
VS Code나 Notepad++에서 파일을 열고 하단 상태 표시줄의 인코딩을 확인합니다.
Windows 기본 PowerShell 5.1과 PowerShell 7 이상은 인코딩 처리 방식이 다를 수 있습니다.
개발 작업을 많이 한다면 가능하면 최신 PowerShell 7 계열을 사용하는 것이 편합니다.
F3. Windows Terminal 폰트 확인
인코딩 문제가 아니라 폰트 문제인 경우도 있습니다.
Windows Terminal을 사용한다면 프로필 설정에서 한글을 지원하는 폰트로 바꿔 봅니다.
예를 들면 아래와 같은 폰트를 사용할 수 있습니다.
☑ D2Coding ☑ Cascadia Mono ☑ Cascadia Code ☑ 맑은 고딕 ☑ 나눔고딕코딩
폰트 문제라면 글자가 네모 박스처럼 보이거나 일부 기호만 이상하게 보이는 식으로 나타날 수 있습니다.
<<결론: PowerShell 설정으로 안 되면 Windows 로캘의 UTF-8 설정을 확인하자>>
이번 문제는 PowerShell에서 한글이 깨지는 단순한 콘솔 설정 문제처럼 보였습니다.
그래서 처음에는 chcp 65001, $OutputEncoding, Get-Content -Encoding utf8 같은 PowerShell 쪽 설정을 먼저 시도했습니다.
하지만 제 txt/log 파일은 이 방법으로 해결되지 않았습니다.
결국 해결된 방법은 Windows의 로캘 설정에서 아래 옵션을 켜는 것이었습니다.
Beta: 전 세계 언어 지원을 위해 Unicode UTF-8 사용
그리고 재부팅 후 PowerShell에서 다시 확인하니 한글이 정상적으로 출력되었습니다.
<요약>
1. PowerShell에서 한글이 깨지면 먼저 `chcp 65001`, `Get-Content -Encoding utf8` 등을 시도해 볼 수 있음.
2. 하지만 PowerShell 설정만으로 안 되는 경우가 있음.
3. 이때는 Windows 설정 → 시간 및 언어 → 언어 및 지역 → 관리 언어 설정 → 시스템 로캘 변경으로 들어감.
4. Beta: 전 세계 언어 지원을 위해 Unicode UTF-8 사용을 체크함.
5. 반드시 재부팅 후 다시 확인함.
6. 오래된 프로그램을 사용한다면 부작용이 없는지도 같이 확인하는 것이 좋음.