저장된 파일이나 Blob 형태의 데이터를 읽어들인 경우에 기본 인코딩은 설치된 Java 인코딩 설정에 의해서 영향을 받으며, Java의 기본 인코딩 설정은 OS에 의해서 영향을 받아서 UTF-8이 아닌경우가 종종 존재 한다.
JVM이 동작을 하게되면 OS의 기본인코딩을 따른다고하니까..뭐..윈도우나 맥에서는 한글데이터가 그다지 깨지는 모습을 볼 수 없는데..
특히 좀 옛날스러운 서버에서 파일을 읽은 경우 같은 코드임에도 불구하고 한글이 깨져서 나온다.
즉, 개발환경에서는 잘만 보이던 한글이 설치한 서버에서는 깨지거나 안보 일 수 있다.
ByteArrayInputStream isr = new ByteArrayInputStream('Byte로읽어온파일데이터');
InputStreamReader inss = new InputStreamReader(isr);
위 코드처럼 같은 코드인데도 불구하고 한글이 막 깨져서 나오는 경우에는 간단히 스트림을 읽을 때 기본 defualt를 사용하지 말고 지정된 캐릭터셋을 사용하도록 지정하면 된다.
InputStreamReader inss = new InputStreamReader(isr, "UTF-8"); //EUC-KR도 상관없다.
파일 입출력과 관련된 기능을 만드는 경우에는 위 코드처럼 왠만하면 인코딩 설정을 아에 기본으로 설정하는 편이 좋은 것 같다. 개발환경에서는 잘만 보이던 한글이 실제 설치하는 서버에서 동작을 하지 않으면 난감하니 말이다.
반응형
'Java(자바)' 카테고리의 다른 글
Java 배열로부터 엑셀, csv, 및 일반 text 파일 만들기 (0) | 2019.05.17 |
---|---|
파일종류, Dos파일 / Unix파일 (0) | 2019.04.25 |
Java 반응형 프로그래밍 (0) | 2019.04.25 |
자바 함수형 프로그래밍 2 (0) | 2019.04.25 |
Java Exception 기록하기 (0) | 2019.04.25 |
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)
댓글