2011-09-27 4 views
2

Google 공급 업체 중 한 곳의 텍스트 파일을 준비하는 데 문제가 있습니다. 파일을 읽는 데 문제가 있습니다. 내가 말한 바에 따르면 파일은 "80 바이트 래핑 형식"이어야합니다. 저는 그들이 메인 프레임 시스템을 사용하고 있다고 믿습니다. 그래서 그 시스템과 관련이 있다고 확신합니다.80 바이트 래핑 된 형식의 텍스트 파일?

파일을 만들 때 간단히 StreamWriterWriteLine()을 사용했지만 이전에이 문제에 대해 들어 본 사람이 있다면 다르게해야 할 일에 대한 조언이나 간단한 코드 조각을 사용할 수있었습니다/그들의 요구를 수용하기 위해 추가하십시오.

제공 할 수있는 도움에 감사드립니다.

+2

기본적으로 한 줄에 80 자마다 줄 바꿈을 넣어야 함을 의미합니다. – Oded

+1

@Oded : 물론 각 문자가 사실 1 바이트로 인코딩되도록해야합니다. –

+0

@Ed S - true입니다. 멀티 바이트 문자가 없으므로 ASCII로 제한해야합니다. – Oded

답변

2

이렇게하면 추억 (COBOL, EDI 및 기타 추악함)이 생깁니다.

writer.Write("{0}\r\n", record); 
writer.Write("{0}\n", record); 

이 writer.WriteLine를 사용하지 마십시오

: 일반적으로 각 "레코드"를 다음 코드로 변환 0x0d로 + 0x0a 그 자체에 (CRLF) 또는 0xa는 (LF)로 종료되는 것을 의미

. 80 바이트 랩핑 형식의 경우, 공급 업체에 따라 다 (니다. 일반적으로 "레코드"는 최대 80 바이트 (CRLF 문자 포함) 여야합니다. 그렇지 않으면 메인 프레임의 입력 버퍼가 폭파됩니다.

나는 회사에 접근하여 그들이 정확히 요구하는 형식의 사양을 제공하도록 요청할 것이므로 애매 모호하지 않습니다. 그들은 이것을 제공하거나 파일 형식에 대한 관련 공급 업체의 문서를 알려줄 수 있어야합니다.

불행한 경우 ASCII 또는 EBCDIC과 같은 특정 인코딩이 필요할 수도 있습니다.

+0

동의. EBCDIC에 걸 겠어. 요구 사항에 따르면 z/OS 시스템이라고 생각합니다. – Sterex

0

나는 80 열 텍스트 파일을 사용하는 것을 기억합니다. 당신은 그들이 바이트에 대해 이야기하고 있다고 확신합니까? 글쎄, 만약 그것의 1 바이트/문자 그것은 동일합니다.

전체 텍스트를 한 문자열에 넣은 다음 간단한 루프를 사용하여 80 개의 문자 뒤에 줄 바꿈을 넣습니다.

+0

대부분의 유니 코드 문자에 대해 char 당 1 바이트가 참이 아닙니다. – Oded

+1

글쎄, 컴퓨터가 80 cols 파일을 필요로한다면 나는 유니 코드를 모른다는 것을 확신한다. :) –

0

공급 업체에게 자세한 정보를 제공해야합니다. "80 byte wrapped"는 여러 가지 다른 것을 의미 할 수 있습니다.

다른 사람들은 지적했듯이 ASCII 인코딩을 거의 기대하고 있습니다. '80 바이트'제한은 실제 행이 80자를 초과 할 수 없음을 의미합니다 (즉, 열 80 이상은 문자가 없음).

논리적 인 라인은 종종 80 바이트보다 길 수 있습니다. 까다로운 부분은 논리적 라인을 물리적 라인에서 분리하는 방법이며, 이에 대한 다양한 형식이 있습니다.

일부는 CRLF로 끝나는 예상 논리 라인 (예 : 레코드)으로 작업했지만 실제 라인은 CR로 끝났습니다. 아니면 그냥 LF. 그래서 길이가 120 개 문자의 기록이로 인코딩 될 것이다 : 어떤 경우에는

79 characters<CR>41 characters<CR><LF> 

, 모든 라인은 CRLF로 종료되었고, 기록의 끝은 빈 줄에 의해 표시되었다.

quoted-printable 인코딩에 대해 이야기하고있을 수도 있습니다.

심각하게, 공급 업체로부터 더 나은 설명을 얻으십시오.

관련 문제