인프런 커뮤니티 질문&답변
2강 작전1. csv/fixedLength 윈도우 실행 관련 유의사항 제보
작성
·
61
·
수정됨
1
현재 윈도우 환경에서 학습 중이어서 형님께서 싫어하실 수 있겠지만, 꽤나 흥미로운 것을 발견해서 형님께(강의내용에 도움이 되실 수도 있을까 하여) 제보드립니다!
참고로 저의 경우 IntelliJ의 powershell에서 echo를 하고 csv/txt내용수정은 IntelliJ에서 직접 하였습니다.
1) csv 실행시 오류
최초 실행시 파싱불가 오류가 발생하였는데, csv파일에서 문제점은 없을 것으로 판단하여 프로젝트의 인코딩을 utf-8에서 EUC-KR로 변경해주었습니다. 이러면 정상 작동하였습니다.

2) fixedLength 실행시 오류
역시 최초 실행시 파싱불가 오류가 발생하였습니다.
로그를 살펴보았을때
인코딩이 잘못되었을 것으로 판단하여 프로젝트의 인코딩 설정과 해당 txt파일의 인코딩 설정을 모두 utf-8로 바꿔주었습니다(utf-16/utf-16LE/utf-16BE 모두 오류 발생, 특히 저 인코딩 문제는 utf-8에서만 유일하게 발생하지 않아서 utf-8 인코딩만 가능한 것으로 보임).
이래도 파싱문제가 발생하였는데,
.columns(new Range[]{ new Range(1, 8), // errorId: ERR001 + 2 new Range(9, 29), // errorDateTime: 19 + 2 new Range(30, 38), // severity: CRITICAL/FATAL + padding new Range(39, 44), // processId: 1234 + 2 new Range(45, 66) // errorMessage: msg + \n })
severity 부분을 30 ~ 39 가 아닌 30 ~ 38로 바꿔주었고
마지막 errorMessage 부분을 46 ~ 66이 아닌 45 ~ 66으로 바꿔주었습니다(21자리 -> 22자리)
echo로 공백을 입력해주었지만 실제 파일을 보았을때는 공백이 먹히지 않았던 것 같습니다. 그래서 아래와 같이 공백대신 문자열 1개를 그냥 입력해주었습니다.

echo를 통한 개행이 먹히지 않아 위와 같이 intellij로 txt파일을 변경해주었습니다.
마지막 문자는 DETECT + 공백 + 개행 -> DETECTS + 개행으로 공백을 제거해주었습니다.

이렇게 했을때 최종적으로 빌드성공하였습니다.
저 Range범위, 특히 severity 범위를 왜 저렇게 구성해야 하는지, 이게 윈도우 실행 환경만 이런건지, 제 환경에서만 이런 문제가 발생하는건지..아직도 모르겠지만..
형님께 제보를 해드리면 좋을 것 같아서 남겨봅니다!





형님 몇가지 정정해드립니다.
1) csv
-> 최초 생성시 echo 생성
-> 이 파일을 다른 이름으로 저장해서 .csv(utf-8)로 형식 변경
-> 이를 읽을때 EUC-KR/utf-8 형태로 인코딩 바꿔서 읽으면 됨
2) .txt
-> 최초 생성시 echo 생성
-> 이 파일도 마찬가지로 다른 이름으로 저장해서 utf-8 형식 변경(확장자는.txt 그대로)
-> 이를 읽을때 utf-8형태로 인코딩 바꿔서 읽으면 됨(단 고정길이의 경우 column 길이를 수정해주어야 합니다)
감기조심하세요 형