CodeBlanks Logo Icon CodeBlanks

Charset

Charset ile bayt-karakter dönüşümünü öğrenirsin.

Charset ile kodlama

Charset (karakter kümesi), dizgiler ile baytlar arasında dönüşüm yapar. NIO, java.nio.charset paketinde bunu sağlar. StandardCharsets sınıfı UTF-8, UTF-16 ve ISO-8859-1 gibi yaygın kümeleri hazır tutar.

Örnek: "AB".getBytes(StandardCharsets.UTF_8) dizgiyi UTF-8 baytlarına çevirir. UTF-8 ASCII ile uyumludur; bu yüzden 'A' ve 'B' tek bayt olur. Türkçe karakterler ise iki bayt kaplar. Doğru küme seçilmezse dizgiler bozuk görünür; bu yüzden kodlamayı her zaman açıkça vermek iyi bir alışkanlıktır.

Kodlama ve kod çözme

Bir dizgiyi bayta çevirmeye kodlama (encode), baytı dizgiye çevirmeye kod çözme (decode) denir. NIO bunu Charset nesnesi üzerinden encode ve decode yöntemleriyle yapar.

Örnek: Charset utf8 = StandardCharsets.UTF_8; ByteBuffer buf = utf8.encode("AB");. Burada buf iki baytlık bir tampondur. Tersine utf8.decode(buf) dizgiyi geri verir. Bu döngü, dosya ve ağdan gelen baytları dizgi olarak işlemenin temelidir.

Uygulama Dizgiyi UTF-8 baytlarına çevir

"AB".getBytes(StandardCharsets.UTF_8) ile bir bayt dizisi al. Bayt dizisinin length özelliğini System.out.println ile yazdır.

Başlangıç kodu

Main.java
// UTF_8 ile baytlara çevir
// length ile yazdır

Örnek çözüm

Main.java
import java.nio.charset.StandardCharsets;

public class CharsetDemo {
    public static void main(String[] args) {
        byte[] bytes = "AB".getBytes(StandardCharsets.UTF_8);
        System.out.println(bytes.length);
    }
}

Beklenen çıktı

2

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 StandardCharsets.UTF_8 neyi tanımlar?

  • Bir karakter kodlaması Doğru cevap
  • Bir tampon
  • Bir kanal
  • Bir yol

Açıklama: UTF_8 bir karakter kodlamasıdır.

2 Charset kavramlarını eşleştir

Kavram Anlamı
StandardCharsets.UTF_8 Karakter kodlaması
getBytes Dizgiden bayt
Charset Kodlama soyutu
new String Bayttan dizgi

3 UTF_8 ile kodla

Soru
"AB".getBytes(StandardCharsets.____);
Cevap
"AB".getBytes(StandardCharsets.UTF_8);

Açıklama: StandardCharsets.UTF_8 yaygın komedir.

Uzman bölümündeki tüm dersler