본문 바로가기
VisualStudio.C++.C#

Visual Studio . 한글깨짐 해결 . 깃허브 VSCode . 파일 인코딩 . UTF-8

by i.got.it 2019. 12. 17.

 

상황예. 

운영체제 ; 윈도우즈 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


 

댓글



비트코인




            암호화폐/외환/나스닥/골드          
       
현물 |선물 인버스 |선물 USDT , bybit MT5               프랍 트레이딩. MT4,MT5