상황예.
운영체제 ; 윈도우즈 10 한글.
Visual Studio 2015~ 2019 등.
윈도우 운영체제 언어가 한글인 상태에서 Visual Studio 설치하면 소스코드 파일 저장시 문자열 인코딩 이 Korean - Codepage 949 으로 되어있고, 이 파일을 깃허브등에 푸시한것을 웹에서 보면 한글 깨져보임. VSCode 에서도 한글깨짐 .
원인.
깃허브등의 웹에서 뷰 처리시 사용되는 인코딩과 파일 저장시 지정된 인코딩 불일치.
해결책 - 파일 1개단위
Visual Studio 에서 파일저장시 인코딩 옵션을 Unicode (UTF-8) 로 하여 파일을 저장하면 UTF-8 인코딩 사용되는 다른 앱이나웹에서 한글 깨지지 않음.
Visual Studio 에서 파일 저장 인코딩 옵션 Unicode 로 변경 방법
Visual Studio 메뉴 -> " Save (파일명) As... " 클릭하여 뜬 창(아래 그림) 에서

위 그림의 붉은 박스 "Save with Encoding..." 클릭하여 뜬 창(아래 그림)에서 인코딩 옵션을 Unicode.. (붉은 박스) 선택하여 저장.

해결책 . 일괄 인코딩 저장 방법 - PowerShell 이용
Visual Studio 자체 에서는 파일 저장 인코딩 옵션을 일괄적용하는 수단 제공안되며, 위 처리처럼 파일 1개 단위로 처리 해야해서 매우 번잡스럽다.
프로젝트 폴더에서 Windows PowerShell 열고 아래 명령어 실행하면 모든 소스 파일이 UTF-8 인코딩으로 변환된다.
기존 작성된 한글 안깨지게 하면서 UTF-8(BOM 포함) 변환
- 파일중 utf-8 인것을 수정하지 않고, ECU-KR 인 파일만 읽어서 UTF-8 로 변환.
실행결과
- 위 스트립트 실행하고나면 VS,VSCode,깃허브 어디서 봐도 주석에 기록한 한글 정상적으로 보인다.

참고. UTF-8(BOM 포함) 변환.
- 인코딩만 변환하는것이라서 이미 한글 작성된 상태에서 인코딩만 변환하면 한글 깨짐.
# 인코딩 변환할 확장자 지정 (*.cpp, *.h, *.cs 등)
Get-ChildItem -Recurse -Include *.cpp, *.h, *.cs, *.hpp | ForEach-Object {
$content = [System.IO.File]::ReadAllText($_.FullName)
# UTF8Encoding($true)의 $true가 바로 'BOM을 포함한다'는 명시적 설정.
$utf8WithBom = New-Object System.Text.UTF8Encoding($true)
[System.IO.File]::WriteAllText($_.FullName, $content, $utf8WithBom)
Write-Host "Converted: $($_.Name)" -ForegroundColor Cyan
}
참고. 아래 구문은 PowerShell 버전 따라 다른 짓을 한다. 버전5.1 이하(배경 파랑색 PowerShell) 에서는 BOM 포함된 UTF-8, 버전 6.0 이상(배경 검정색) 에서 BOM 없는 UTF-8 로 변환한다. .. MS 답게 일관성도 없고.. 그들의 산만함은 역겨울 정도임.
Get-ChildItem -Recurse -Include *.cpp,*.h,*.c,*.hpp | ForEach-Object {
$content = Get-Content $_.FullName
$content | Set-Content $_.FullName -Encoding utf8
}
해결책 .editorconf 파일 이용 하는 방법
- 프로젝트의 솔루션 (.snl) 파일있는 곳에 .editotconfig 파일 만들고 아래처럼 기록해두면 이후 모든 파일은 UTF-8(BOM 포함) 된것으로 생성된다. 즉 프로젝트 초기 생성시 이 파일부터 솔루션(.sln) 파일 있는 곳에 배치해 둔다.
root = true
[*]
charset = utf-8-bom
VS2015 는 EditorConfig 확장 설치해야 .editorconfig 적용됨.
VS2017 부터는 .editorconfig 지원 기능이 기본 내장되어있어 EditorConfig 확장 설치 안해도 됨.
기타. UTF-8 BOM 여부 관련
깃허브나 VSCOde 에서는 UTF-8 인코딩 파일이면 한글 깨짐없이 정상 표현된다. ( UTF-8 에 BOM 있든 없든 )
- 현재 대세는 BOM 없는 UTF-8 이 주류이며 MS 만 여전히 UTF-8 (BOM 있는) 을 적용해야하는 경우가 많음.
- 웹(HTML/CSS/JS), 리눅스, macOS, Python, Go, Rust 등 거의 모든 현대적 환경에서는 BOM이 없는 UTF-8 인코딩을 기본으로 함.
연관
메모장에서 저장시 인코딩 방식 선택. ANSI, 유니코드, UTF-8
메모장에서 저장시 인코딩 방식 선택가능하다. ANSI, 유니코드, UTF-8 (BOM이 붙어있는 UTF-8임) 이 지원된다. 아래 그림처럼 메모장에서 다른 이름으로 저장하기 에서 붉은 박스 부분에서 인코딩 타입을 선택하여..
igotit.tistory.com
htaccess,인코딩, ANSI,UTF-8,유니코드, Internal Server Error
문제 상황 카페24에서 아파치,php 환경 호스팅 상황에서, .htaccess 파일을 윈도우 메모장에서 저장할 때 유니코드나 UTF-8 인코딩 형식으로 저장한 것을 웹서버에 업로드 하면, 브라우저로 접속시 아래 처럼 Inte..
igotit.tistory.com
워드프레스 테마에 공백 생기는 오류 해결 - php 파일 인코딩을 UTF-8 BOM없는것으로 해야함.
개요. 본 글은 워드프레스에서 발생하는 흔한 오류중의 하나인 테마의 상단에 공백 생기는 오류를 해결한다. 1. 워드프레스 테마에 공백 오류 증상과 원인을 설명하고, 2. 1의 문제를 해결하기 위하여 php 파일을..
igotit.tistory.com
첫 등록 : 2019.12.17
최종 수정 : 2026.04.28
단축 주소 : https://igotit.tistory.com/2423
'VisualStudio.C++.C#' 카테고리의 다른 글
| Vcpkg. 개요 . 설치 (0) | 2020.03.16 |
|---|---|
| MS. WebSocket 구현 정보 - 기본 (0) | 2020.03.06 |
| Visual C++ 2010 2015 2017 2019 재배포 가능 패키지 32bit, 64bit (0) | 2019.12.08 |
| Visual Studio native C++ 프로젝트에서 64비트, 32비트 플랫폼 선택하여 빌드 가능하게 설정하기. (1) | 2019.10.27 |
| Visual Studio , Visual C++ 활용 정리. (2) | 2019.10.27 |
댓글