# Karakter kodlaması

Adres: https://softwaredictionary.org/tr/terimler/character-encoding
Kategori: Programlamanın Temelleri
Son güncelleme: 2026-10-05
İngilizcesi: Character Encoding

Kısaca: Karakter kodlaması, metni byte'lara ve geri metne çeviren kurallardır; her harfin saklanıp gönderilmesini sağlar. Bugünkü standart UTF-8'dir.

## Karakter kodlaması (character encoding) nedir?

Bilgisayarlar yalnızca sayı saklar; bu yüzden bir metin dosyaya kaydedilmeden ya da ağ üzerinden gönderilmeden önce byte'lara dönüşmelidir. Bunun nasıl yapılacağını karakter kodlaması belirler. Unicode, bütün yazı sistemlerindeki her karaktere code point denen kendi numarasını verir: A harfi U+0041, Türkçedeki ç ise U+00E7'dir. UTF-8 gibi bir kodlama da her code point'in byte olarak nasıl yazılacağını söyler.

1960'lardan kalma ASCII 7 bit kullanıyor ve 128 karakteri kapsıyordu: İngilizce harfler, rakamlar, noktalama işaretleri ve kontrol kodları. Ardından her bölge için bir tane olmak üzere, Türkçe için ISO-8859-9 gibi, birbiriyle uyumsuz düzinelerce 8 bitlik kodlama geldi. UTF-8 bütün Unicode'u karakter başına 1 ila 4 byte ile kodlayıp düz ASCII metni olduğu gibi bırakarak bu karmaşaya son verdi; bugün neredeyse her web sayfası onu kullanıyor ve çoğu dilde ve araçta varsayılan kodlama o.

Metin ancak okuyan, yazanla aynı kodlamayı kullanırsa doğru görünür. UTF-8 bir dosyayı Windows-1254 olarak açarsanız ç, Ã§ olur; bu bozulmaya mojibake denir. Web sayfalarının `<meta charset="utf-8">` bildirmesinin, HTTP yanıtlarının `Content-Type` başlığında bir charset belirtmesinin ve veritabanlarıyla kaynak dosyaların en baştan UTF-8'e ayarlanmasının en iyisi olmasının nedeni budur.

## Önemli noktalar

- Karakter kodlaması metni byte'lara, byte'ları metne çevirir.
- Unicode her karaktere bir numara verir; UTF-8 gibi bir kodlama da bu numaraların byte'a nasıl dönüşeceğine karar verir.
- UTF-8 karakter başına 1 ila 4 byte kullanır ve ASCII metni olduğu gibi bırakır.
- Metni yanlış kodlamayla okumak onu bozar; bu yüzden her yerde UTF-8 kullanın.

## Örnek: Karakterlerden UTF-8 byte'larına, sonra yanlış kodlamayla geri

```javascript
const bytes = new TextEncoder().encode("Aç"); // TextEncoder always writes UTF-8
console.log(bytes);                              // Uint8Array(3) [ 65, 195, 167 ]
console.log("ç".codePointAt(0).toString(16));    // "e7": the code point U+00E7

// The same bytes read as Windows-1254 instead of UTF-8:
console.log(new TextDecoder("windows-1254").decode(bytes)); // "AÃ§"
```

## Sık sorulan sorular

**Unicode ile UTF-8 arasındaki fark nedir?**

Unicode bir katalogdur: her karaktere bir numara verir. UTF-8 bu numaraları byte olarak yazmanın yollarından biridir; UTF-16 ve UTF-32 de diğerleridir. Yani bir metin Unicode'dayken dosyası UTF-8 olarak kodlanmış olabilir.

**Neden ç yerine Ã§ gibi karakterler görüyorum?**

Byte'lar bir kodlamayla yazılıp başka bir kodlamayla okunmuş; çoğunlukla UTF-8, Windows-1252 ya da Windows-1254 gibi tek byte'lık bir kodlamayla okunmuştur. Metni yazıldığı kodlamayla okuyun ve bu soru hiç gündeme gelmesin diye her yerde UTF-8 kullanın.

## Kaynaklar

- [RFC 3629: UTF-8, a transformation format of ISO 10646](https://www.rfc-editor.org/rfc/rfc3629.html)
- [Unicode FAQ: UTF-8, UTF-16, UTF-32 & BOM](https://www.unicode.org/faq/utf_bom.html)
- [WHATWG Encoding Standard](https://encoding.spec.whatwg.org/)

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
