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);
|
댓글 없음:
댓글 쓰기