10 Ekim 2016 Pazartesi

CharsetDecoder Sınıfı

Giriş
CharSetDecoder verilen byte'ları Java String'ine çevirir.

decode metodu - ByteBuffer
Şöyle yaparız.
byte[] bytes = { ...,... };

ByteBuffer wrapped = ByteBuffer.wrap (bytes);
CharsetDecoder decoder = Charset.forName("UTF-8").newDecoder();
CharBuffer out = decoder.decode (wrapped);
decode metodu  - ByteBuffer + CharBuffer
Karakterleri birer birer şöyle okuruz.
CharsetDecoder cd = Charset.forName("UTF-8").newDecoder();
ByteBuffer in = ByteBuffer.wrap(bytes);
CharBuffer out = CharBuffer.allocate(1);
int p = 0;
while (in.hasRemaining()) {
  cd.decode(in, out, true);
  char c = out.array()[0];
  int nBytes = in.position() - p; //Kaç byte okuduk hesapla
  p = in.position();
  out.position(0); //Tekrar başa al
}
onMalformedInput ve onMalformedOutput
Şöyle yaparız.
CharsetDecoder utf8Decoder = Charset.forName("UTF-8").newDecoder();
utf8Decoder.onMalformedInput(CodingErrorAction.IGNORE);
utf8Decoder.onUnmappableCharacter(CodingErrorAction.IGNORE);
ByteBuffer bytes = ...;
CharBuffer parsed = utf8Decoder.decode(bytes);


Hiç yorum yok:

Yorum Gönder