2016년 7월 15일 금요일

JDK 1.4 튜토리얼 - 2장 고급 NIO(New Input/Output) : Charset

CHAPTER 2 - 고급 NIO(New Input/Output) : Charset

2.3 Charset을 이용한 인코딩과 디코딩

Charset는 ByteBuffer <-> CharBuffer에 대한 encoding 와 decoding를 제공 한다.
encoding 과 decoding (** 의미가 반대 느껴 질 수 있음)
  • decoding : 바이트들을 캐릭터로 변환하는 것
  • encoding : 캐릭터을 바이트들로 변환하는 것  
모든 Java 버젼에서 사용 가능한 Charset
이름
정의
US-ASCII
7비트 아스키
ISO-8859-1
ISO 라틴 알파벳, latin-1
UTF-8
8비트 UCS 변환 포맷
UTF-16BE
16비트 UCS 변환 포맷(big-endian)
UTF-16LE
16비트 UCS 변환 포맷(little-endian)
UTF-16
16비트 UCS 변환 포맷(바이트 순서 byte-order 마크 옵션에 의해 결정)
EUC-KR
한글 완성형 인코딩


// 시스템에 가용한 Charset 집합 가져오기
Charset.availableCharsets();
// 별명 집합 가져오기
charset.aliases();
// Charset 객체 생성
Charset charset = Charset.forName("EUC-KR");
인코더 와 디코더 이용
  • CharsetEncoder, CharsetDecoder 클래스 사용
    • newEncoder() , newDecoder() 메소도 호출하여 생성
    • encode(), decode() 사용하여 변환 (ByteBuffer <-> CharBuffer)
  • 다른 charset에서 다른 charset으로도 변환 가능 함.
Charset charset = Charset.forName("EUC-KR");
//디코더 생성
CharsetDecoder decoder = charset.newDecoder();
//ByteBuffer -> CharBuffer (디코딩)
CharBuffer charBuffer = decoder.decode(byteBuffer);
//인코더 생성
CharsetEncoder encoder = charset.newEncoder();
//CharBuffer -> ByteBuffer (인코딩)
ByteBuffer byteBuffer = encoder.encode(charBuffer);
출처 : 인포북 JDK 1.4 Tutorial

댓글 없음: