Powershell 에서 한글이 깨진다면(powershell 설정으로 안될때 해결방법)

2026. 5. 23. 12:50IT&모바일&컴퓨터

반응형

PowerShell에서 한글이 깨진다면(PowerShell 설정으로 안 될 때 해결 방법)

PowerShell에서 작업을 많이 하다 보면 어느 순간부터 Windows Command Prompt보다 PowerShell을 더 자주 열게 됩니다.

저도 프로그램을 만들고, Python venv 환경을 켜고, 로그를 확인하는 일이 많아지다 보니 자연스럽게 PowerShell을 기본 터미널처럼 사용하게 되었습니다.

그런데 문제는 한글이었습니다.

분명히 한두 달 동안은 별문제 없이 잘 보였던 것 같은데, PowerShell 창을 하나 더 열어서 tail -f처럼 로그 마지막 부분만 확인하려고 했더니 한글이 깨져 보이기 시작했습니다.

예를 들면 이런 식입니다.

Get-Content .\app.log -Tail 50 -Wait

원래 프로그램에서 로그로 남겼을 때는 한글이 깨지지 않았습니다.

텍스트 파일을 에디터로 열어 보면 멀쩡해 보이는데, PowerShell에서 Get-Content -Tail로 보면 한글이 이상하게 나오는 상황이었습니다.

증상 요약

☑ 프로그램 로그 파일 자체는 정상으로 보임

☑VS Code, 메모장, Notepad++ 등에서는 한글이 잘 보일 수 있음

☑ 그런데 PowerShell에서 Get-Content -Tail, Get-Content -Wait 등으로 보면 한글이 깨짐

chcp 65001 같은 코드페이지 설정을 해도 해결되지 않을 수 있음

☑ PowerShell 설정만 바꿔서는 안 되는 경우가 있음

 


<A. 먼저 시도한 방법: PowerShell 코드페이지 설정 - 반정도의 해결>

구글에서 검색해 보면 가장 먼저 나오는 해결책은 대체로 PowerShell 또는 콘솔의 인코딩을 UTF-8로 바꾸는 방법입니다.

대표적으로 아래와 같은 명령을 많이 안내합니다.

chcp 65001

또는 PowerShell에서 콘솔 입출력 인코딩을 직접 UTF-8로 지정하기도 합니다.

[Console]::InputEncoding = [System.Text.Encoding]::UTF8
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$OutputEncoding = [System.Text.Encoding]::UTF8

그렇지만 다음과 같이 깨집니다.

 

PowerShell 7 이상(따로 설치를해야함)을 사용한다면 파일을 읽을 때 인코딩을 명시해 볼 수도 있습니다(사실 기본 powershell 5.1.26100.8457에서도 되네요)

Get-Content .\app.log -Encoding utf8 -Tail 50 -Wait

Windows PowerShell 5.1을 사용 중이라면 상황에 따라 아래처럼 Default 또는 Oem 인코딩을 지정해 보는 경우도 있습니다.

Get-Content .\app.log -Encoding Default -Tail 50 -Wait

 

하지만 제 경우에는 이 방법으로 해결되근 했지만, 이방법으로 만족할 수는 없었습니다.

 

물론 이 방법이 틀렸다는 뜻은 아닙니다. 문제의 원인이 단순히 현재 PowerShell 창의 코드페이지라면 chcp 65001이나 $OutputEncoding 설정만으로도 해결될 수 있습니다.

 

하지만 한글 깨짐 문제는 생각보다 원인이 여러 곳에 나뉘어 있습니다.

PowerShell 한글 깨짐이 생기는 대표 원인

☑ 현재 콘솔 코드페이지가 UTF-8이 아님

☑ 로그 파일이 UTF-8이 아니라 CP949/EUC-KR 계열로 저장됨

☑ 프로그램이 로그를 저장할 때 인코딩을 명확히 지정하지 않음

☑ Windows PowerShell 5.1과 PowerShell 7의 기본 인코딩 동작 차이

☑ Windows의 시스템 로캘 설정과 실제 파일 인코딩이 맞지 않음

☑ 터미널 폰트가 한글을 제대로 지원하지 않음

 

그래서 PowerShell 창에서만 설정을 바꾸는 방식은 일종의 임시 처방에 가깝습니다.


<B. PowerShell 설정으로 안 될 때 의심할 부분>

PowerShell에서 chcp 65001을 했는데도 한글이 계속 깨진다면, 이제는 PowerShell만 볼 것이 아니라 Windows 전체의 언어/로캘 설정을 확인해야 합니다.

특히 오래된 프로그램, 일부 Windows용 툴, Python 실행 환경, 로그 라이브러리, 외부 명령어가 섞여 있으면 다음과 같은 일이 생길 수 있습니다.

☑ 프로그램은 UTF-8로 로그를 남겼다고 생각했는데,
☑ Windows는 기존 한국어 코드페이지(CP949) 기준으로 해석하거나,
☑ 반대로 프로그램은 CP949로 저장했는데 PowerShell은 UTF-8로 읽으려고 하는 상황

 

이렇게 되면 파일은 분명히 존재하고 내용도 있는데, 한글만 이상하게 보입니다.

영어, 숫자, 경로, 날짜는 정상이라서 더 헷갈립니다.

2026-05-23 10:32:11 INFO 사용자 로그인 성공

이렇게 보여야 하는 로그가 PowerShell에서는 아래처럼 깨져 보일 수 있습니다.

2026-05-23 10:32:11 INFO 사용자 로그인 성공

또는 반대로 이런 식의 깨짐이 보일 수도 있습니다.

2026-05-23 10:32:11 INFO ����� ���� ����

이런 경우에는 단순히 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++에서 파일을 열고 하단 상태 표시줄의 인코딩을 확인합니다.

가능하면 로그 파일을 UTF-8로 저장하도록 프로그램 쪽 설정을 바꾸는 것이 좋습니다.

Python이라면 파일 로그를 남길 때 인코딩을 명시하는 것도 방법입니다.

import logging

logging.basicConfig(
    filename="app.log",
    level=logging.INFO,
    encoding="utf-8",
    format="%(asctime)s %(levelname)s %(message)s"
)

F2. PowerShell 버전 확인

현재 PowerShell 버전도 확인해 봅니다.

$PSVersionTable.PSVersion

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. 오래된 프로그램을 사용한다면 부작용이 없는지도 같이 확인하는 것이 좋음.
반응형