CharsetDecoder etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
CharsetDecoder etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

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);