vc2005 로 빌드하다보면 DXSDK 나 BOOST 에서 잘못된 문자에 대한 아래와 같은 컴파일 경고가 발생한다.

../../../../boost/ref.hpp : warning C4819: 현재 코드 페이지(949)에서 표시할 수 없는 문자가 파일에 들어 있습니다. 데이터가 손실되지 않게 하려면 해당 파일을 유니코드 형식으로 저장하십시오.
../../../../boost/utility/enable_if.hpp : warning C4819: 현재 코드 페이지(949)에서 표시할 수 없는 문자가 파일에 들어 있습니다. 데이터가 손실되지 않게 하려면 해당 파일을 유니코드 형식으로 저장하십시오.
../../../../boost/python/ptr.hpp : warning C4819: 현재 코드 페이지(949)에서 표시할 수 없는 문자가 파일에 들어 있습니다. 데이터가 손실되지 않게 하려면 해당 파일을 유니코드 형식으로 저장하십시오.
../../../../boost/utility/enable_if.hpp : warning C4819: 현재 코드 페이지(949)에서 표시할 수 없는 문자가 파일에 들어 있습니다. 데이터가 손실되지 않게 하려면 해당 파일을 유니코드 형식으로 저장하십시오.

헤더파일안에 latin1 로 인코딩된 문자가 있을때 발생하며 이런 경우 아래와 같은 파이썬 스크립트를 이용해 utf8 로 변환해주면 경고 메시지를 안 볼 수 있다.

import
os
import stat

def FindFilesByExt(ext, path):
    if path[-1] != os.sep:
        path += os.sep

    ext = ext.lower()

    retList = []
    for name in os.listdir(path):
        if stat.S_ISDIR(os.stat(path + name).st_mode):
            retList += FindFilesByExt(ext, path + name)
        else:
            if name[-len(ext):].lower() == ext:
                retList.append(path + name)

    return retList

for name in FindFilesByExt(".hpp", "."):
    print name
    src = open(name).read()
    open(name, "w").write(src.decode("latin1").encode("utf8"))
이올린에 북마크하기(0) 이올린에 추천하기(0)
2007/07/11 20:50 2007/07/11 20:50

http://imp17.com/tc/myevan/trackback/68

  1. Visual C++ Express Edition 활용 팁 // AnonymousYoon's Homepage 2008/03/19 17:37 [Delete]