http://khacademy.96.lt/wp/java/java-character-set의-이해
오늘 하루종일 삽질 하면서 테스트한 결과를 요약 하자면 다음과 같다.
위의 링크의 블로그의 코드가 큰 도움이 되었다.
- String에 저장되는 코드는 유니코드이다.
- 이 유니코드를 다른 코드로 내보낼때 사용하는것이 .getByte("EUC-KR") 같은 코드이다.
- 만약 이클립스 인코딩이 UTF-8인경우 FileInputStream으로 EUC-KR을 읽어서 String으로 바로 저장을 하게되면 EUC-KR의 코드를 UTF-8로 생각하여 유니코드로 변환되어 저장되므로 이 데이터는 다른 코드로 변환이 불가능해진다.
- 각기 다른 인코딩의 파일을 읽어야 한다면 byte 배열로 읽어들인 이후에 인코딩을 지정해야만 한다.
public class FileRead {
public static void main(String[] args) {
System.out.println("InputStream으로 읽기");
System.out.println(new String(readFile2("utf8.txt")));
System.out.println("utf8.txt -- 읽기완료");
System.out.println(new String(readFile2("ansi.txt")));
System.out.println("ansi.txt -- 읽기완료");
try {
System.out.println(new String(readFile2("ansi.txt"),"euc-kr"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
System.out.println("ansi.txt -- 읽기완료");
}public static byte[] readFile2(String fileName){
FileInputStream fis=null;
byte[] data = null;
try {
fis = new FileInputStream(fileName);
data = new byte[fis.available()];
fis.read(data);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally{
try{
if(fis!=null) fis.close();
}catch(IOException e){ ; }
}
return data;
}}
'지식창고 > Java' 카테고리의 다른 글
이클립스 컬러테마 문제 (0) | 2014.11.26 |
---|---|
Sparkjava 와 Gradle 그리고 배포 (0) | 2014.09.29 |
mybatis procedure 삽질 (0) | 2014.08.28 |
Java Resize Library Test (0) | 2014.08.09 |
eclipse aptana git 문제 (0) | 2014.05.29 |