gcc 에서 UTF-8 with BOM 로 된 소스파일 컴파일 하기
글쓴이: B00m / 작성시간: 금, 2008/04/18 - 3:18오후
현재 한글 text 를 처리하는 프로그램을 C++로 만들고 있습니다.
내부적으로 wchar_t 타입으로 로 문자들을 처리하고 있습니다.
프로그램은 리눅스와 윈도우에서 돌아가고 있고, 같은 소스를 가지고 gcc 와 VC8 로 컴파일하고 있습니다.
그런데 예를 들어 다음과 같은 소스를 컴파일 할때
const wchar_t* s = L"안녕하세요";
VC8 같은 경우는 utf-8 혹은 로컬인코딩된 소스 모두 컴파일이 가능합니다.
그런데 gcc 같은 경우는 utf-8인 소스 파일만 컴파일이 가능하다는 것을 알았습니다.
그래서 소스 파일을 utf-8 로 저장하기로 했는데,
문제는 gcc 같은 경우는 소스 파일에 BOM 이 포함 안되어 있어야 하고 VC8 같은 경우는 포함되어 있어야 합니다. (VC8 같은 경우 포함 안되어 있으면 그냥 로컬인코딩으로 취급하기 때문에 문제가 있습니다)
gcc 같은 경우는 BOM 코드를 알수 없는 문자라고 다음과 같은 에러를 냅니다.
a.cpp:1: error: stray '\357' in program a.cpp:1: error: stray '\273' in program a.cpp:1: error: stray '\277' in program
gcc 에서 BOM 이 들어간 소스를 컴파일하는 방법이 없을까요?
Forums:
-finput-charset=CHARSET 이
-finput-charset=CHARSET 이 옵션을 이용하면
UTF-8 이외에 다른 인코딩으로 된 소스를 컴파일할 수 있습니다.
VC++에서 BOM없이 UTF-8 소스를 인식할 수 있는 옵션을 찾아보거나,
아예 위의 옵션을 이용해서 로컬 인코딩 소스를 사용해도 될 거 같습니다.
man gcc
> man gcc
Hello World.
답변 감사합니다. VC
답변 감사합니다.
VC 에서 좀 불편하더라도 수동으로 다시 저장하면 되니까 큰 문제는 안됩니다.
-finput-charset=cp949 로 해서 윈도우 기본 로케일을 사용할려고 하니 gcc 에서 include 하고 있는 헤더 파일들에서 변환이 안된다고 에러 나는 파일들이 있네요.. (boost 파일 쪽..)
결국 VC8 에서 BOM 없는 코드를 컴파일 할 수 있는 방법을 더 찾아 봐야 겠네요..
댓글 달기