Charset
- Java kursu
- Uzman
- Ders 16/46
- 5 dk
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
// UTF_8 ile baytlara çevir
// length ile yazdırÖrnek çözüm
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
"AB".getBytes(StandardCharsets.____);
"AB".getBytes(StandardCharsets.UTF_8);
Açıklama: StandardCharsets.UTF_8 yaygın komedir.