2011-08-16 3 views
1

우리는 주로 Windows 환경에서 PHP 응용 프로그램을 개발하고 우리의 텍스트 원본 파일을 PC/ANSI에 저장했습니다.크로스 플랫폼 개발 (PC, Mac, Linux)에 사용할 인코딩은 무엇입니까?

그러나 이제 개발자가 Mac 플랫폼을 사용하는 우리와 함께하고 있으며 컴퓨터에서 '패치'를 만드는 데 문제가 있습니다. 그는 변경을하고 않을 때 :

svn diff > patchfile.patch 

그가 소스 코드 파일의 각각의 모든 라인 (분명히 경우 밤은있는) 수정 된 것을 나타냅니다 패치 파일을 생성합니다. 뿐만 아니라

PC/UTF-8 (using UTFCast Express which I writes the BOM by default) 
PC/UTF-8 (using Notepad++ "Encoding > Convert to UTF-8" - which writes the BOM) 

: 그는 변화를하게하고 SVN은 diff> 패치 파일을 수행 할 때마다 이러한 경우 모든

PC/UTF-8 (using Notepad++ "Encoding > Convert to UTF-8 without BOM") 
PC/UTF-8 (using Notepad++ "Encoding > Encode in UTF-8 without BOM") 

,

나는대로 테스트 ANSI 파일을 저장했습니다. patch는 모든 라인이 변경된 것처럼 모든 라인을 출력합니다!

이 [우리는뿐만 아니라 지난 3 "SVN은 diff -x -p> patchfile.patch를"일을 시도 - 차이 없다]

는 또한, 마지막 두 옵션으로 생성 된 파일이 ANSI로 표시 계속 내 PC 컴퓨터에. 둘 다 파일을 수정하지 않고 DOS 프롬프트에서 'fc'(파일 비교)를하면 차이가 나타나지 않습니다.

크로스 플랫폼 개발에 어떤 인코딩을 사용해야합니까?

답변

5

문자 인코딩에는 문제가 없지만 줄 끝 문제가 있습니다. Windows는 CR-LF (13/10)를 사용하며 Mac은 이제 유닉스 스타일의 LF 만 사용합니다 (10).

서브 버전 속성 svn : eol-style = native을 관련 파일에 설정하면 제대로 작동합니다.

+0

안녕하세요 davmac - SVN 클라이언트 측 또는 서버에 설정되어 있습니까? 어떻게 모든 SVN 저장소가 '네이티브'인코딩을 사용하도록 설정할 수 있습니까? – siliconpi

+0

클라이언트 끝에서 속성을 설정 한 다음 리포지토리에 커밋합니다. http://subversion.apache.org/faq.html#auto-props 및 http://svnbook.red-bean.com/en/1.6/svn.advanced.props를 참조하십시오.html (특히 "자동 속성 설정"에서) – davmac

0

Windows에서는 "\ r \ n"(줄 바꿈/캐리지 리턴) 줄 끝을 사용합니다.

OS/X는 유닉스 "\ n"문자를 사용합니다.

이전 OS9는 "\ r"을 사용했습니다.

모든 파일에 대해 UTF-8 문자 인코딩을 사용하려는 이유가 확실하지 않습니다. 특히 프로젝트의 모든 영어 사용자가 그렇다면 더욱 그렇습니다.

귀하의 mac dev는 다른 사용자와 호환되도록 PC 행 끝을 사용하도록 편집기를 설정해야합니다. 편집자는 종종 올바른 줄 끝을 감지하고 기존 파일에 적합한 줄을 사용하지만 새로 만든 파일의 경우 OS 기본값을 사용하도록 설정할 수 있습니다.

줄 끝 문자를 한 os에서 다른 os로 변환하는 크로스 플랫폼 명령 줄 도구 인 flip으로 실험 할 수 있습니다.

+0

잘못된 줄 끝이 발견되면 post-commit 후크에서 flip을 실행하도록 svn을 설정할 수 있지만이 실행을 허용하지 않도록주의해야합니다 바이너리가 손상 될 수 있습니다. – gview

+0

우리는 결국 우리의 소스 코드에서 사용되는 특별한 '확장 된'문자 세트를 갖게 될 것입니다. – siliconpi

관련 문제