Visual studio 2010 에서 소스파일을 UTF-8 로 자동변환

[출처] http://nving.tistory.com/66

hack/etc

Visual C++ 10은 기본적으로 ASCII 인코딩으로 파일을 만든다. (VC#은 기본적으로 유니코드 파일로 생성된다는거 같다)

근데 이게 git와 함께 쓰이면 gitweb 등에서 한글이 깨져보이는 현상이 발생하는데 이는 gitweb이 UTF-8 인코딩을 기본 인코딩으로 보여주기때문이다.

이를 위해 소스파일들의 인코딩을 변경해줘야되는데 메뉴의 File -> Advanced Save Options에서 Encoding을 UTF-8로 변경해야하는 번거로움을 감수해야한다.

081912_1127_Visualstudi1.jpg

그만좀 보고싶다.


프로그래머의 힘은 자동화다. 언제까지 이 노가다를 할텐가?
자동화 방법은 다음과 같다.

매크로 에디터에 들어가 EnviromentEvents에서 코드 맨 윗부분의 Module들을 Imports 하는 부분에

Option Strict Off

Option Explicit Off

Imports System

Imports EnvDTE

Imports EnvDTE80

Imports EnvDTE90

Imports EnvDTE90a

Imports EnvDTE100
Imports System.Diagnostics '여기까지 기존 모듈

Imports System.IO

위와 같이 System.IO 모듈을 포함시키고 Automatically generated code, do not modify 다음에 다음 코드를 붙여넣고 저장한다.


Sub MakeUTF8File(ByVal path As String)

Dim input As New FileStream(path, FileMode.Open)

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

'Check BOM

Dim isUTF8 As Boolean = (input.ReadByte = &HEF And input.ReadByte = &HBB And input.ReadByte = &HBF)

input.Close()

If (Not isUTF8) Then

Dim s As String

s = File.ReadAllText(path, System.Text.Encoding.Default)

File.WriteAllText(path, s, System.Text.Encoding.UTF8)

End If

End Sub

Public Sub DocumentEvents_DocumentSaved(ByVal Document As EnvDTE.Document) Handles DocumentEvents.DocumentSaved

Dim path As String = Document.FullName

MakeUTF8File(path)

End Sub


'이 핸들러는 왠만하면 빼는게 좋다. 라이브러리 파일들을 디버깅 차원에서 열때 자동으로 바꿔버리면 조금 곤란할듯

Public Sub DocumentEvents_DocumentOpening(ByVal path As String, ByVal flag As Boolean) Handles DocumentEvents.DocumentOpening

MakeUTF8File(path)

End Sub

이제 다음과 같은 상황에서 파일이 UTF-8 인코딩으로 자동변환이 된다.

1. 파일을 열때
2. 파일을 생성 (생성할때 자동으로 열리니까)
3. 파일을 저장할때

이제 UTF-8 BOM과 함께하는(?) 코딩을 하면 된다.

추가내용1:
@waan26
님이 알려주신 새파일 생성시 UTF-8을 적용하는 좀 더 좋은 방법이 있다. (C++ Class 생성에는 안먹힌다)
위 방법을 사용시 새 파일을 생성하면 파일 변환이 변환됬다는 메세지 박스가 무조건 뜨게 되는데 (파일 로딩 후에 변환을 시도하는거 같다)
새 파일 생성시 무조건 UTF-8 파일을 생성하는 좀 더 깔끔한 해법으로 다음과 같은 방법이 있다.

1. Visual Studio 설치된 위치(보통 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcprojectitems)에 간다.
2. hfile.h, newc++file.cpp 과 같은 템플릿 파일의 인코딩을 UTF-8로 변경한다
3. 그 뒤로는 항상 UTF-8 파일이 생성된다.


추가내용2: 클래스 템플릿을 따로 만드는 방법도 있다. 이건 좀 있다가 해보고 적어야지 [...]

P.S. 그건 그렇고 코드를 이쁘게 보여줘야되는데.. ( --)

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
175 이통사 OpenAPI file 가을의 곰을... 2012.08.22 4175
174 포털 OpenAPI file 가을의 곰을... 2012.08.22 4099
173 공공기관 OpenAPI 가을의 곰을... 2012.08.22 3356
172 멀티부팅시 우분투 GRUB 복구하기.. file 가을의 곰을... 2012.08.21 6025
171 Hadoop HDFS BASIC Usage Over View : 하둡 사용 개요 가을의 곰을... 2012.08.20 5378
170 HDFS 테스트 file 가을의 곰을... 2012.08.20 4560
169 클라우드 기반의 재해복구 시스템 (DRS system) 구축 분석에 대한 논문 가을의 곰을... 2012.08.20 4576
168 오픈 소스 클라우드 분석 file 가을의 곰을... 2012.08.20 3896
» Visual studio 2010 에서 소스파일을 UTF-8 로 자동변환 file 가을의 곰을... 2012.08.19 3622
166 HTML5로 자신만의 3D 엔진을 만들자 file 가을의 곰을... 2012.07.29 8303
165 SQL 쿼리를 NoSQL인 MongoDB 쿼리로 변경하기 가을의 곰을... 2012.07.29 4249
164 GitHub 소개글 - 류광님 가을의 곰을... 2012.07.29 3523
163 GIT Server 구축 : LINUX UBUNTU, MS WIN file 가을의 곰을... 2012.07.28 5786
162 git 서버 설치 요령 file 가을의 곰을... 2012.07.28 4020
161 mongoDB와 PHP 참고자료 가을의 곰을... 2012.07.15 4845
160 MongoDB와 PHP 연동 가을의 곰을... 2012.07.15 4767
159 phpmyadmin과 비슷하게 mongoDB를 php 서버로 관리하기 위한 phpMoAdmin file 가을의 곰을... 2012.07.15 10935
158 Hadoop을 이용한 분산 데이터 처리, Part 3: 애플리케이션 개발 file 가을의 곰을... 2012.07.15 3577
157 Hadoop을 이용한 분산 데이터 처리, Part 2: 추가 주제 file 가을의 곰을... 2012.07.15 3979
156 Hadoop을 이용한 분산 데이터 처리, Part 1: 시작 file 가을의 곰을... 2012.07.15 4444
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED