비주얼 스튜디오 UTF8-BOM 플러그인 (1)

Posted at 2010/06/27 18:33// Posted in msvc
요즘 아이폰이 인기입니다.
그래서 아이폰 프로그래밍도 인기입니다.
아이폰 프로그래밍은 매킨토시에서 해야 합니다.
매킨토시는 BSD 다시 말해 유닉스 기반 운영체제입니다.

유닉스라... 익숙하지 않습니다.
더군다나 기존에 만들었던 코드는 전부 윈도우 기반입니다.
영희 철희 크로스를 시도 해야합니다.

그런데 한가지 문제점이 있습니다.
한글 윈도우 기본 인코딩은 CP949 입니다.
유닉스의 기본 인코딩 방식은 UTF8 입니다.

파일 변환이 필요합니다.

아하!
앞으로는 UTF8 기반으로 작업하면 되겠구나!


하지만...
앞에서 말한 것처럼 한글 윈도우에서 돌아가는 MS 제품의 기본 인코딩은 CP949 입니다.
비주얼 스튜디오에서 새로운 파일을 만들면 무조건 CP949 인코딩이 됩니다.

기본 인코딩을 바꿀 방법이 없을까?
구글링을 해보면 3가지 방법이 나옵니다.


1. 비주얼 스튜디오 파일 메뉴에 있는 Advanced Save Options... 를 사용해
파일 하나 하나마다 UTF8 인코딩으로 변환한다.

2. 윈도우 기본 언어 설정을 영어로 변경한다.


3. 비주얼 스튜디오 모든 템플릿 파일을 찾아 인코딩을 UTF8 로 변경한다.
( Common 7\IDE\ItemTemplates )

참고:
http://devblog.ailon.org/devblog/post/2007/11/05/File-Encoding-in-Visual-Studio.aspx

모두 쉣 -ㅅ- 소리 나오는 방법들이네요.


왜 상식적인 방법...
예를 들면 기본 인코딩 설정이나 파일별 인코딩 태그 등을...
지원하지 않는건지 모르겠습니다; (이미 지원하고 있다면 좀 알려주세요 T_T)! 저의 검색 능력으로는 실패입니다. )


Tools/Options/Environment/International Settings


Language:
English
Same as Microsoft Windows


이런 옵션이 있음에도 불구하고 파일 기본 인코딩은 무조건 윈도우 기본 설정을 사용하는군요 =ㅁ=);; ㄷㄷㄷ;


Tools/Options/Environment/Document
[ ] Save documents as Unicode when data cannot be saved in codepage

http://stackoverflow.com/questions/696627/how-to-set-standard-encoding-in-visual-studio

게다가 현재 코드 페이지로 저장이 안되는 문자가 나올때만 유니코드로 저장시킨다는 공포의 옵션까지 ㄱ-
영어 윈도우 사용자,  한글 윈도우 사용자, 일본 윈도우 사용자가 뒤섞인 상황에서 벌어질 지옥이 생각나네요.



어쨌든 여러가지 해결책을 생각해봤습니다.


해결책1: 퍼포스를 사용한다.

퍼포스를 사용하면 파일 타입을 수정해서 unicode 형식으로 저장하고
윈도우에서는 P4CHARSET 을 UTF8-BOM 으로 설정하고
유닉스에서는 P4CHARSET 을 (BOM 이 없는) UTF8 로 설정하면 됩니다. 야호!


단점은;
일단 퍼포스를 구입해야합니다.
2개까지는 무료이고 계정당 워크 스페이스 제한은 없지만;
개발팀은 대개 2명보다 많은데다; 계정 2개로 나눠 모든 사람이 사용하면 버전 관리가 쉽지 않습니다.
결국 개발팀 숫자 만큼 사야하는데 비용이 들어가는 만큼 쉬운 결정은 아닙니다.

SVN 과 퍼포스는 완전히 다른 작업 스타일을 지원합니다.
SVN 은 일단 작업하고 나중에 커밋하지만, 퍼포스는 먼저 체크아웃하고 작업한 다음 서브밋해야 합니다.
물론 퍼포스를 써도 SVN 처럼 사용할 수는 있지만; 느리고 불편합니다 ㄱ-

unicode 파일 형식 관리가 의외로 쉽지 않습니다.
퍼포스가 자동으로 unicode 여부를 판단하는데; 오진이 많습니다.
더군다나 한번 잘못올라가면 복구가 되지 않고 새로 올려야 합니다.
(몇번 파일 에러나면 p4 typemap 을 사용해 디폴트 binary 로 설정하게 되더군요; )



해결책2: SVN 을 수정한다.

svn 에는 파일별 프로퍼티를 지원합니다.
svn:eol-style 이란 프로퍼티가 있어서 운영체제에 따라 \r\n 으로 저장할지 \n 으로 저장할지 설정할 수 있습니다.
하지만 안타깝게도 text-style 같은 프로퍼티가 없기 때문에 직접 수정한 다음 빌드해서 사용해야합니다.
능력만 된다면 훌륭한 해결 방법인데 안타깝네요 ㄱ-



해결책3: 개발툴을 수정한다.

gcc 에서 다양한 인코딩을 지원하게 하거나, 비주얼 스튜디오에서 utf8 을 사용하면 됩니다.

구글링 해보면 gcc 에서 utf8-bom 문서를 컴파일 못한다고 나와있던데;
어제 linux 와 apple 에서 테스트해보니 잘 되더군요; 문제를 호소하는 글들이 다들 2008년 글인걸 보면
최근 gcc 컴파일러에서는 버그가 수정된게 아닐까 싶습니다. (혹시 제가 잘못 알고 있는 거라면 알려주세요~ )

만약 지원 안될 경우를 대비해서 파이프를 사용해 인코딩을 변환하는 놀라운 방법이 소개되어있더군요;
(역시 코드 구루들은 대단하네요; )

애플에서 utf8-bom 이 컴파일 된다면 문제는 간단해집니다.
비주얼 스튜디오에서 utf8-bom 문서 변환만 쉽게 할수 있으면 되죠 ~(-_-)~


그래서 비주얼 스튜디오 utf8-bom 자동 붙이기 플러그인을 만들어 보았습니다! (다음에 계속... )
이올린에 북마크하기(0) 이올린에 추천하기(0)
2010/06/27 18:33 2010/06/27 18:33