IT/IntelliJ
IntelliJ 한글 깨짐 해결: 파일 인코딩·콘솔·빌드 인코딩 점검 순서 (IntelliJ IDEA 2026.2, 2026년 9월 12일 확인
바른정보블로그
2026. 9. 12. 18:15

IntelliJ IDEA에서 한글 주석이 ???나 안녕처럼 보이거나, 편집기는 멀쩡한데 실행 콘솔 출력만 깨지는 일이 있습니다. 원인이 파일 인코딩, 컴파일 인코딩, 실행·출력 인코딩의 세 계층으로 갈리기 때문입니다. IntelliJ IDEA 2026.2 기준으로 JetBrains 공식 도움말과 JEP 400, Gradle·Maven 공식 문서에 적힌 설정만 써서 문제 계층을 가려내는 순서를 정리했습니다. 확인 기준일은 2026년 9월 12일입니다.
빠른 결론 3줄
- 편집기에서 깨지면 상태 표시줄 File Encoding 위젯으로 원래 인코딩 Reload 후 UTF-8로 Convert합니다.
- 콘솔만 깨지면 Settings | Editor | General | Console의 Default Encoding을 UTF-8로 바꿉니다.
- 빌드 결과물이 깨지면 Gradle
options.encoding, Mavenproject.build.sourceEncoding을 UTF-8로 고정합니다.
증상으로 원인 계층 가려내기
| 증상 | 의심 계층 | 먼저 볼 곳 |
|---|---|---|
| 편집기에서 이미 한글이 깨진다 | 파일 인코딩 | File Encoding 위젯, Editor | File Encodings |
| 편집기는 정상, 콘솔만 깨진다 | 출력 인코딩 | Editor | General | Console의 Default Encoding |
.properties 값만 깨진다 |
프로퍼티 기본값 | Default encoding for properties files |
| 빌드·배포 결과물만 깨진다 | 컴파일 인코딩 | Gradle·Maven·javac -encoding |
| JDK를 올린 뒤 옛 파일이 깨진다 | 기본 charset 변경 | JEP 400, -Dfile.encoding |
단계별 해결 방법
- 현재 값 확인. 편집기 하단 File Encoding 위젯에서 파일 인코딩을 보고, 터미널에서
java -XshowSettings:properties -version으로file.encoding값을 확인합니다. - 프로젝트 기본값을 UTF-8로.
Ctrl+Alt+S→ Editor | File Encodings에서 Global Encoding과 Project Encoding을 UTF-8로 지정합니다. 파일·폴더 설정이 프로젝트보다, 프로젝트가 전역보다 우선하므로 아래 Path 표의 폴더별 설정도 확인합니다. - 깨진 파일은 개별로 되살리기. 파일을 열고 File Encoding 위젯(또는 File | File Properties | File Encoding)에서 원래 인코딩(예: windows-949)을 고른 뒤 Reload를 누릅니다. Reload는 표시만 바꿔 파일이 변하지 않습니다. 글자가 정상이면 UTF-8을 고르고 Convert로 저장합니다.
- .properties는 기본값이 다릅니다. JetBrains 문서는 "the default encoding for properties files is ISO-8859-1"이라고 명시합니다. Default encoding for properties files를 UTF-8로 바꾸거나, 이스케이프 방식을 유지하려면 Transparent native-to-ascii conversion을 켜세요.
- 콘솔 출력 인코딩 지정.
Ctrl+Alt+S→ Editor | General | Console → Default Encoding을 UTF-8로 선택합니다. 기본값이 시스템 인코딩이라 한국어 Windows에서는 콘솔만 깨질 수 있습니다. - 빌드 도구 인코딩 고정. Gradle은 기본이 플랫폼 인코딩이므로
tasks.withType(JavaCompile).configureEach { options.encoding = 'UTF-8' }를 추가합니다. Maven은 POM에<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>을 넣습니다. IDE 컴파일러를 쓰면 Build, Execution, Deployment | Compiler | Java Compiler의 Additional command line parameters에-encoding UTF-8을 적습니다. - 실행 구성에 JVM 옵션 추가. Run | Edit Configurations... → 구성 선택 → Modify options | Add VM options에서
-Dfile.encoding=UTF-8을 지정합니다. JEP 400은 명령줄 지정이 공식 방법이라고 설명하며, 예전 동작이 필요하면-Dfile.encoding=COMPAT을 씁니다.
주의사항
- Convert는 파일을 덮어씁니다. 깨진 상태로 Convert하면 깨짐이 확정될 수 있으니 Reload로 정상 표시를 확인한 뒤 진행하고, 작업 전 커밋해 두세요.
sun.stdout.encoding같은 내부 속성은 JEP 400이 "unspecified and unsupported"로 규정해 권하지 않습니다.- IDE 옵션 파일(
idea64.exe.vmoptions)에-Dfile.encoding을 넣으라는 안내가 흔하지만 JetBrains 공식 권고 문구는 확인되지 않았습니다(미확인·비공식). - JDK 18 이상은 기본 charset이 UTF-8이라 오히려 옛 CP949 소스가 깨집니다. 파일을 UTF-8로 변환하는 쪽이 우선입니다.
- 메뉴 이름은 영문 UI 기준이며 한글 언어 팩에서는 표기가 다를 수 있습니다.
그래도 안 될 때 추가 점검
- BOM·내부 선언: BOM이 있으면 다른 설정과 무관하게 해당 유니코드 인코딩이 적용되고, XML·HTML·JSP의 인코딩 선언도 설정보다 우선합니다.
- Windows 콘솔 코드 페이지: 명령 프롬프트에서
chcp로 값을 확인합니다. Microsoft 문서 기준 949는 한국어 ANSI, 65001은 UTF-8이며 변경은 이후 실행한 프로그램부터 적용됩니다. - 시스템 로캘 옵션: Windows 설정 > 시간 및 언어 > 언어 및 지역 > 관리 언어 설정 > 시스템 로캘 변경의 "Beta: Use Unicode UTF-8" 항목. 베타 옵션이라 일부 프로그램에 영향이 갈 수 있습니다.
자주 묻는 질문
Q1. Global과 Project 중 무엇을 바꾸나요?
둘 다 UTF-8이 안전합니다. 특정 폴더만 깨진다면 File Encodings의 Path 표에 다른 인코딩이 지정돼 있는지 보세요.
Q2. 편집기는 정상인데 콘솔만 깨지는 이유는?
JEP 400이 표준 API를 UTF-8로 통일하면서 콘솔 입출력은 예외로 두었고, System.out은 콘솔 charset을 따르기 때문입니다.
Q3. 이미 깨진 한글을 되돌릴 수 있나요?
원본 바이트가 남아 있으면 Reload로 살릴 수 있지만, 잘못된 인코딩으로 저장된 뒤에는 복구가 어렵습니다. 버전 관리 이력에서 되돌리는 편이 빠릅니다.
함께 보면 좋은 글
- IntelliJ Gradle JVM 버전 오류 해결: Unsupported class file major version 점검법
- IntelliJ Cannot resolve symbol 빨간 글씨 해결
- IntelliJ Maven 의존성 다운로드 안 됨 해결
공식 출처
- JetBrains, Encoding – jetbrains.com/help/idea/encoding.html
- JetBrains, File Encodings – settings-file-encodings.html
- JetBrains, Console – settings-console-folding.html
- OpenJDK, JEP 400 – openjdk.org/jeps/400
- Gradle, CompileOptions – docs.gradle.org
- Apache Maven, General FAQ – maven.apache.org/general.html
- Microsoft, Code Page Identifiers – learn.microsoft.com
확인 기준: IntelliJ IDEA 2026.2, JDK 18 이상, Windows 11, 2026년 9월 12일.