CSV PARSER 이용해서 확장자가. csv인 파일을 파싱해서 처리해야 하는 일이 생겼다. 그런데 테스트 진행중에 CSV 파싱 오류가 계속해서 발생했다. 구글링 해본 결과 윈도우 OS에서 파일이 편집되었을 경우 인코딩 방식을 'ISO-8859-1'로 지정해야 한다는 것을 알게 되었다!
자바 코드
/**
* <pre>
* getParsingCsvData
* </pre>
*/
private List<TestVO> getParsingCsvData(File file){
List<TestVO> csvList = new ArrayList<>();
// try with resources
try (BufferedReader reader = Files.newBufferedReader(file.toPath(), Charset.forName("ISO-8859-1"))) {
// 헤더를 제외한 레코드를 읽어서 파싱
Iterable<CSVRecord> records = CSVFormat.EXCEL.withFirstRecordAsHeader().withSkipHeaderRecord().parse(reader);
for (CSVRecord record : records) {
TestVO testVO = new TestVO();
// 한 레코드마다 반복문
String columnOne = record.get(0);
csvList.add(testVO);
}
} catch (FileNotFoundException e) {
LOGGER.error("getParsingCsvData file not found: {}", e.getMessage());
} catch (IOException e) {
LOGGER.error("getParsingCsvData IO Exception: {}", e.getMessage());
}
return csvList;
}
** 참조한 사이트 **
To conclude, in scenarios like these, it is very important to know the origin of the edits.
https://blog.francium.tech/notes-read-csv-with-encoding-iso-8859-1-in-ruby-a71543610cd
https://www.baeldung.com/apache-commons-csv
'Dev > Java' 카테고리의 다른 글
[effective-java] 동시성 (0) | 2020.01.15 |
---|---|
[effective-java] 일반적인 프로그래밍 원칙 (0) | 2020.01.14 |
[java] Logback 과 Maven (0) | 2019.10.04 |
[java] JVM, JRE, JDK, 자바 메모리 구조 (0) | 2019.09.28 |
[java] HttpClient (1) | 2019.09.26 |