2008-09-26 4 views
3

소프트웨어가 다른 시스템의 개행 문자를 처리합니까?개행 문자

Linux/BSD linefeed   ^J 10  x0A 
Windows/IBM return linefeed ^M^J 13 10 x0D x0A 
old Macs  return   ^M 13  x0D 
others? 

정신 나간의 이유로, 필자는 텍스트 파일에 리눅스 버전의 개행 문자를 사용하려고합니다. 그러나, 필자가 텍스트 파일을 가져 와서 Windows라고 말하면, 일부 프로그램은 텍스트에서 개행 문자를 제대로 재생하지 못합니다. 이걸 어떻게 다룰 거니?

답변

3

그들이 말한대로, 당신이 읽고 쓰는 것에 대해 당신이 쓰고 자유주의하는 것에 엄격히 따르십시오.

응용 프로그램에서 두 줄의 끝을 제대로 읽어야합니다. 줄 바꿈을 사용하고 잠재적으로 Windows 사용자를 화나게하려는 경우 괜찮습니다.

메모장을 제외하고는 대부분의 프로그램이 두 가지 방법에 만족합니다.

(그리고 난 그냥 재미 다하게 윈도우에 Cygwin에서 사용)로 변환 할 수 있습니다

0

메모장을 제외한 최신 Windows 프로그램에서 줄 바꿈 전용 파일을 잘 처리 할 수 ​​있습니다. 그러나 Windows 프로그램을 사용하여 생성 된 파일은 여전히 ​​끝 부분을 차지하는 경향이 있습니다.

대부분의 경우 라인 종료는 런타임 라이브러리에 의해 플랫폼 특정 방식으로 자동 처리됩니다. 예를 들어, 파일을 fopen(..., "r")으로 여는 C 프로그램은 실제 줄 끝과 관계없이 모든 플랫폼에서 일관된 방식 (줄 바꿈 만)으로 줄을 볼 수 있습니다.

string convertLineBreaks(String line, String lineBreakYouWant) { 
    replace all ^M^J or ^M or ^J in line with lineBreakYouWant 

    return line 
} 

편집 : 내가 무슨 뜻 질문을 다시 읽고 생각 같은 것을 사용하면 '거래'를 말할 때 의미하지만, 기본적으로 당신은 그냥 말할 수있는

-2

확실하지 않음 (대상 시스템에 대해) 잘못된 줄 바꿈을 처리 할 수없는 다른 사람 프로그램을 어떻게 처리합니까?

1) 처리 할 수있는 프로그램을 사용하거나 2) 모든 유형의 줄 바꿈을 찾아 스크립트를 통해 파일을 실행 한 다음 시스템에 맞는 유형으로 변환하는 것이 좋습니다.

+0

기능에 문제가 있습니다. 이를 사용하여 줄 바꿈을 감지하는 문자열을 실행하면 각 Windows 줄 바꿈에 대해 두 개가 검색됩니다. 그것을 기준으로 줄을 나누면 빈 줄이 생깁니다. –

+0

해결되었습니다. 여전히 Psuedo 코드이지만 아이디어는 탐욕스럽게 잠재적 인 줄 바꿈을 소비하며이 경우에는 '수정'됩니다. 그 '고침'은 당신이하려고하는 것에 정말로 의존합니다. – SCdF

1

표준 파이썬 분포 (도구/스크립트) 두 개의 명령 줄 스크립트와 함께 제공 crlf.py 및 lfcr.py 전화를 윈도우와 유닉스/리눅스 라인 엔딩 사이. 에

.NET에서

[Source]

1

은 새로운 라인 Environment.NewLine로 표시되므로 프레임 워크는 시스템의 새로운 라인은 무엇이든 받아 (CR + LF 또는 CR 전용 또는 LF 만)하는 방식으로 설계되어 런타임에 사용하십시오. 물론 이것은 Mono에서 궁극적으로 유용합니다.

+0

그리고 이것이 올바른 해결책입니다. 플랫폼이 개행을 처리하게하십시오. –

0

필자가 아는 한, 메모장은 줄 구분 기호에 문제가 있습니다. 사실상 세계의 다른 소프트웨어는 이러한 세 가지 유형의 구분 기호 중 하나를 허용하고 다른 옵션도 허용합니다. 불행히도 메모장은 요즘 대부분의 컴퓨터 사용자를위한 첫 번째 리조트의 편집장입니다. 나는 마이크로 소프트가이 상황을 계속하게하는 것은 무책임하다고 생각한다. 나는 Vista에서 한 번도 해본 적이 없지만 XP에서와 마찬가지로 문제가 여전히 존재한다고 생각합니다. 어떤 몸이라도 다음 버전에 대해 알고 있습니까?

0

다른 사람들이 말했듯이, 필요한 경우 주위에 많은 (아주 사소한) 변환기가 있습니다.ASCII 모드에서 FTP로 전송을 할 경우, 그것은 ... 자동 사실

을 전환 할 것을 참고, 메모장 LF는 종료와 관련된 문제가 가장 proeminent 프로그램 ...

가장 짜증나는 필자는 Unix상의 Windows 파일을 편집하는 사람들이나 본질적인 형식을 확인하지 않고 유틸리티를 추가하는 사람들이 본질적으로 혼합 라인이 끝나는 텍스트 파일을 보았습니다.

0

기쁘게도 표준의 권장 사항을 따르십시오. 기존 맥 OS와 같은 특별한 경우를

http://unicode.org/standard/reports/tr13/tr13-5.html

그리고 제공하는 옵션을 제공합니다. 또는 케이스를 안정적으로 감지 할 수 있으면 케이스를 자동으로 처리하십시오.

유닉스 스타일로 텍스트 서식을 지정하는 것이 좋습니다. Windows 사용자는 잊어 버리십시오. Windows 사용자는 문서 나 데이터에 대해 일반 텍스트를 사용하지 않으므로 당신이 일반 텍스트를 전달하면 그들은 화가납니다. 그들은 항상 Word 또는 Excel 문서를 기대합니다. 평범한 텍스트 파일을 사용한다고해도, 텍스트를 표시하는 것은 문제가됩니다.

그러나 유닉스 사용자는 모든 도구가 잘못 작동합니다. 특히 Unix의 경우 엄격하게 표준을 따르십시오.

추신. Windows 사용자가 개발자 인 경우 Unix에서 텍스트로 서식을 지정하고 Unix에서 제공 한 파일임을 알리십시오.