유닉스 (ubuntu) 플랫폼에서 csv 파일을 내보내는 디코딩 문제 해결
1. 내보낸 csv 파일에 BOM 추가하기
CsvWriter writer = new CsvWriter(outputwriter, ',');
writer.write(new String(new byte[] { (byte) 0xEF, (byte) 0xBB,(byte) 0xBF }));
2. 파일의 출력 흐름도 문자 집합을 붙여야 한다
resOs = response.getOutputStream();
OutputStream buffOs = new BufferedOutputStream(resOs);
OutputStreamWriter outputwriter = new OutputStreamWriter(buffOs, "gbk");
이렇게 하면 부호 문제를 해결할 수 있다.
전체 코드는 다음과 같습니다.
private void writeCsv(HttpServletResponse response, List<Record> recordList) {
response.setContentType("data:text/csv;charset=gbk");
response.setHeader("Content-Disposition", "attachment; filename=test.csv");
OutputStream resOs = null;
try {
resOs = response.getOutputStream();
OutputStream buffOs = new BufferedOutputStream(resOs);
OutputStreamWriter outputwriter = new OutputStreamWriter(buffOs, "gbk");
CsvWriter writer = new CsvWriter(outputwriter, ',');
writer.write(new String(new byte[] { (byte) 0xEF, (byte) 0xBB,(byte) 0xBF }));
// write data
//
writer.flush();
writer.close();
} catch (IOException e) {
log.error(e.getMessage(), e);
} finally {
try {
if (resOs != null) {
resOs.flush();
resOs.close();
}
} catch (IOException e) {
log.error(e.getMessage(), e);
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
LINUX 시리즈(1부)UNIX는 1969년 AT&T에서 개발한 운영 체제입니다. UNIX는 다중 사용자, 다중 프로세스 운영 체제입니다. 기본적으로 사용 가능한 두 가지 기본 UNIX 버전이 있습니다. 대부분의 UNIX 버전은 이러한 버...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.