13 Kasım 2017 Pazartesi

Charset Sınıfı- NIO

Giriş
Şu satırı dahil ederiz.
import java.nio.charset.Charset;
Soyut bir sınıftır. forName() gibi factory metodlarından birisini kullanmak gerekir.

Verilen byte'ları Java String'ine veya Java String'ini byte'lar çevirir.

Byte dizisinden string oluştururken kullanılabilir. Şöyle yaparız.
String str = new String(new byte[]{...}, Charset.forName("UTF-8"));
String'i başka bir encoding'e çevirmek için kullanılabilir. Şöyle yaparız.
String str= ...;

Charset u8 = Charset.fromName("UTF-8");
Charset latin1 = Charset.fromName("ISO-8859-1");
String utf8String = u8.decode(latin1.encode(str)).toString();

aliases metodu
Niçin bilmiyorum ama charset'lerin canonical name ve alias isimleri var. Alias isimleri şöyle öğrenilebilir.
Charset ascii = Charset.forName("US-ASCII");
System.out.println(ascii.aliases());
decode metodu
CharsetDecoder kullanmakla aynı şeydir. Byte dizisinden string'e çevirir. Şöyle yaparız.
Charset utf8charset = Charset.forName("UTF-8");

ByteBuffer inputBuffer = ByteBuffer.wrap(new byte[]{(byte)0xC3, (byte)0xA2});

// decode UTF-8
CharBuffer data = utf8charset.decode(inputBuffer);
encode metodu
CharsetEncoder kullanmakla aynı şeydir. String'de byte dizisine çevirir. Şöyle yaparız.
Charset utf8charset = Charset.forName("UTF-8");

CharBuffer data = ...;

// encode ISO-8559-1
ByteBuffer outputBuffer = iso88591charset.encode(data);
byte[] outputData = outputBuffer.array();
Bu yöntemin kestirme yolu şöyle.
byte[] iso88591Data = theString.getBytes("UTF-8");
defaultCharSet metodu
Sistemin varsayılan karakter ayarını belirtir.
System.out.println (Charset.defaultCharset());
forName metodu
Bu metod bir factory gibi çalışır. İçine verilen string "canonical name" veya "alias" olabilir. Yani
Charset.forName("ASCII")
ile
Charset.forName("US-ASCII");
aynı şeylerdir.

UTF-8 için şöyle yaparız.
Charset utf8charset = Charset.forName ("UTF-8");
ISO-8859-1 için şöyle yaparız.
Charset iso88591charset = Charset.forName("ISO-8859-1");
Code page 857 için şöyle yaparız.
Charset.forName("Cp857")
newDecoder metodu
Şöyle yaparız.
CharsetDecoder decoder = StandardCharsets.UTF_8.newDecoder();
Şöyle yaparız.
CharsetDecoder decoder = Charset.forName("UTF-8").newDecoder();

Hiç yorum yok:

Yorum Gönder