Düz metin

Bilgi işlemde, düz metin yalnızca karakterlerden oluşan okunabilir materyali temsil eden ancak grafiksel gösterimini veya diğer nesneleri (kayan noktalı sayılar, resimler, vb.) temsil etmeyen veriler (örneğin dosya içerikleri) için kullanılan geniş/serbest bir terimdir. Ayrıca metnin basit düzenini etkileyen boşluklar, satır sonları veya sekme karakterleri gibi sınırlı sayıda "boşluk" karakteri de içerebilir. Düz metin, stil bilgilerinin dahil edildiği biçimlendirilmiş metinden; paragraflar, bölümler ve benzerleri gibi belgenin yapısal kısımlarının tanımlandığı yapılandırılmış metinden; ve bazı kısımların ikili nesneler (kodlanmış tamsayılar, gerçek sayılar, görüntüler, vb.) olarak yorumlanması gereken ikili dosyalardan farklıdır.

Bu terim, bazen oldukça gevşek bir şekilde, "sadece" "okunabilir" içerik (veya sadece konuşmacının tercih etmediği hiçbir şey içermeyen dosyalar) içeren dosyalar anlamında kullanılır. Örneğin, herhangi bir yazı tipi veya düzen göstergesi (işaretleme, işaretleme veya hatta sekmeler gibi); kıvırcık tırnaklar, kesilmeyen boşluklar, yumuşak tireler, em tire ve/veya bitişik harfler gibi karakterler veya diğer şeyler hariç tutulabilir.

Prensip olarak, düz metin herhangi bir kodlama içinde olabilir, ancak bazen bu terim ASCII anlamına gelir. UTF-8 ve UTF-16 gibi Unicode tabanlı kodlamalar daha yaygın hale geldikçe, bu kullanım azalıyor olabilir.

Düz metin bazen yalnızca "ikili" dosyaları hariç tutmak için de kullanılır: dosyanın en azından bazı bölümlerinin yürürlükteki karakter kodlamasıyla doğru şekilde yorumlanamadığı dosyalar. Örneğin, "hello" (herhangi bir kodlamada) ve ardından bir karakter olmayan ikili bir tamsayıyı ifade eden 4 bayttan oluşan bir dosya veya dize ("string") ikili bir dosyadır. Bir düz metin dosyasını farklı bir karakter kodlamasına dönüştürmek, doğru karakter kodlaması kullanıldığı sürece metnin anlamını değiştirmez. Ancak, bir ikili dosyanın farklı bir biçime dönüştürülmesi, metin olmayan verilerin yorumlanmasını değiştirebilir.

Düz metin ve zengin metin
Unicode Standardına göre:

"Düz metin, karakter kodlarının saf bir dizisidir; düz kodlanmamış metin bu nedenle Unicode karakter kodlarının bir dizisidir.
Buna karşılık, "zengin metin" olarak da bilinen "biçimlendirilmiş metin" ("styled text"), düz metin artı dil tanımlayıcısı, yazı tipi boyutu, renk, köprü metni bağlantıları vb. gibi ek bilgiler içeren herhangi bir metin gösterimidir.
SGML, RTF, HTML, XML ve TeX, düz metin verilerini ek veri yapılarını temsil eden karakter dizileriyle serpiştirerek tamamen düz metin akışları olarak temsil edilen zengin metin örnekleridir."

Ancak diğer tanımlara göre, işaretleme veya diğer üst veri (meta-data) içeren dosyalar, işaretleme aynı zamanda doğrudan insan tarafından okunabilir bir formda olduğu sürece (HTML, XML vb.) genellikle düz metin olarak kabul edilir. Dolayısıyla, SGML, RTF, HTML, XML, wiki işaretlemesi ve TeX gibi gösterimlerin yanı sıra neredeyse tüm programlama dili kaynak kodu dosyaları düz metin olarak kabul edilir. Bir dosyanın düz metin olup olmadığı belirli bir içerikle ilgili değildir. Örneğin, bir SVG dosyası çizimleri ve hatta bit eşlemeli grafikleri ifade edebilir, ancak yine de düz metindir.

İkili dosyalar yerine düz metin kullanımı, kısmen bilgisayar mimarisi uyumsuzluklarına karşı büyük ölçüde bağışıklık kazandırarak dosyaların "vahşi doğada" çok daha iyi hayatta kalmasını sağlar. Örneğin, Endianlığın tüm sorunlarından kaçınılabilir (UTF-8 yerine UCS-2 gibi kodlamalarla, endianlık önemlidir, ancak potansiyel olarak bilinmeyen alt kümeleri için değil, her karakter için eşit olarak).

Kullanım
Günümüzde düz metin kullanmanın amacı, öncelikle kendi özel kodlama veya biçimlendirme veya dosya biçimi gerektiren programlardan bağımsız olmaktır. Düz metin dosyaları her yerde bulunan metin editörü ve yardımcı programlarla açılabilir, okunabilir ve düzenlenebilir.

Bir komut satırı arayüzü insanların düz metin olarak komutlar vermesine ve yine tipik olarak düz metin olarak bir yanıt almasına olanak tanır.

DOS, Windows, klasik Mac OS ve Unix ve benzerlerindeki sayısız program gibi diğer birçok bilgisayar programı da düz metin işleme veya oluşturma yeteneğine sahiptir; ayrıca web tarayıcıları (Lynx ve Line Mode Browser gibi birkaç tarayıcı görüntüleme için yalnızca düz metin üretir) ve diğer e-metin okuyucuları.

Düz metin dosyaları programlamada neredeyse evrenseldir; bir programlama dilinde talimatlar içeren bir kaynak kod dosyası neredeyse her zaman bir düz metin dosyasıdır. Düz metin, bir programın başlangıcında kaydedilen ayarlar için okunan yapılandırma dosyası için de yaygın olarak kullanılır.

Düz metin çoğu e-posta için kullanılır.

Bir yorum, bir ".txt" dosyası veya bir TXT kaydı, genellikle yalnızca insanların okuması için tasarlanmış düz metin (biçimlendirme olmadan) içerir.

Bilgiyi kalıcı olarak saklamak için en iyi format ikili format yerine düz metindir.

Kodlama
Karakter kodlamaları
1960'ların başlarından önce bilgisayarlar metin yazmaktan ziyade sayılarla yoğun hesaplama için kullanılıyordu ve bellek son derece pahalıydı. Bilgisayarlar genellikle her karakter için yalnızca 6 bit ayırır ve yalnızca 64 karaktere izin verirdi ― A-Z, a-z ve 0-9 için kodlar atandığında yalnızca 2 kod kalırdı: bu da yeterli değildi. Çoğu bilgisayar küçük harfleri desteklememeyi tercih etti. Bu nedenle, Roberto Busa'nın Index Thomisticus, Brown Corpus ve diğerleri gibi ilk metin projeleri, aslında büyük harf olması amaçlanan harflerin önüne bir yıldız işareti koymak gibi kurallara başvurmak zorunda kaldı.

IBM'den Fred Brooks, bir gün insanlar metin işlemek isteyebileceği için 8 bit uzunluğundaki baytlara geçilmesini şiddetle savundu ve kazandı. IBM EBCDIC kullanmasına rağmen, o andan itibaren çoğu metin ASCII'de kodlanmaya başlandı, (yazdırılmayan) kontrol karakterleri için 0'dan 31'e kadar değerler ve harfler, rakamlar ve noktalama işaretleri gibi grafik karakterler için 32'den 127'ye kadar değerler kullanıldı. Çoğu makine karakterleri 7 yerine 8 bitte saklıyor, kalan biti yok sayıyor ya da sağlama toplamı (CRC) olarak kullanıyordu.

ASCII'nin neredeyse her yerde bulunması büyük bir yardımdı, ancak uluslararası ve dilsel kaygıları gidermekte başarısız oldu. Dolar işareti ("$") İngiltere'de kullanışlı değildi ve İspanyolca, Fransızca, Almanca, Portekizce ve diğer birçok dilde kullanılan aksanlı karakterler ASCII'de tamamen mevcut değildi (Yunanca, Rusça ve çoğu Doğu dilinde kullanılan karakterlerden bahsetmiyorum bile). Birçok kişi, şirket ve ülke ihtiyaç duydukları ekstra karakterleri tanımladılar -genellikle kontrol karakterlerini yeniden atadılar veya 128 ila 255 aralığındaki değerleri kullandılar. 128'in üzerindeki değerlerin kullanılması 8. bitin sağlama toplamı olarak kullanılmasıyla çelişir, ancak sağlama toplamı kullanımı yavaş yavaş ortadan kalkmıştır.

Bu ek karakterler, farklı ülkelerde farklı şekilde kodlanıyordu ve bu da metinlerin, orijinal kurallarını anlamadan çözülmesini imkansız hale getiriyordu. Örneğin, bir tarayıcı bir karakter kümesini başka bir karakter kümesi olarak yorumlamaya çalışırsa ` yerine ¬A' görüntüleyebilir. Uluslararası Standardizasyon Örgütü (ISO) sonunda çeşitli dillere uyum sağlamak için ISO 8859 altında birkaç kod sayfası geliştirdi. Bunlardan ilki (ISO 8859-1) "Latin-1" olarak da bilinir ve Latin tabanlı karakterler kullanan Avrupa dillerinin çoğunun (hepsinin değil) ihtiyaçlarını karşılar (hepsini kapsayacak kadar yer yoktu). Daha sonra ISO 2022, dosya ortasında farklı karakter setleri arasında "geçiş" için kurallar sağlamıştır. Diğer birçok kuruluş bunların varyasyonlarını geliştirdi ve uzun yıllar boyunca Windows ve Macintosh bilgisayarlar uyumsuz varyasyonlar kullandı.

Metin kodlama durumu gittikçe daha karmaşık hale geldi ve ISO ve Unicode Consortium tarafından bilinen tüm (veya en azından şu anda bilinen tüm) dilleri kapsayabilecek tek ve birleşik bir karakter kodlaması geliştirme çabalarına yol açtı. Bazı anlaşmazlıklardan sonra, bu çabalar birleştirildi. Unicode şu anda 1.114.112 kod değerine izin vermekte ve neredeyse tüm modern metin yazma sistemlerinin yanı sıra birçok tarihi ve matbaa dingbatları, matematiksel semboller gibi dilsel olmayan birçok karakteri kapsayan kodlar atamaktadır.

Metin, kodlamasına bakılmaksızın düz metin olarak kabul edilir. Alıcının metni düzgün bir şekilde anlayabilmesi veya işleyebilmesi için hangi kodlamanın kullanıldığını bilmesi (veya anlayabilmesi) gerekir; ancak kullanılan bilgisayar mimarisi veya veriyi oluşturan program (varsa) tarafından tanımlanan ikili yapılar hakkında herhangi bir şey bilmesine gerek yoktur.

Düz metnin belirli kodlamasını açıkça belirtmenin belki de en yaygın yolu bir MIME türü kullanmaktır.
E-posta ve HTTP için varsayılan MIME türü "text/plain"dir. -- biçimlendirme içermeyen düz metin.
Hem e-posta hem de HTTP'de sıklıkla kullanılan bir diğer MIME türü "text/html; charset=UTF-8" -- HTML biçimlendirmesiyle UTF-8 karakter kodlaması kullanılarak temsil edilen düz metin.
Bir başka yaygın MIME türü de "application/json" -- JSON işaretlemesiyle UTF-8 karakter kodlaması kullanılarak temsil edilen düz metin.

Karakter kodlamasına ilişkin herhangi bir açık gösterge olmadan bir belge alındığında, bazı uygulamalar hangi kodlamanın kullanıldığını tahmin etmeye çalışmak için karakter kümesi algılama kullanır.

Kontrol kodları
ASCII ilk 32 kodu (0-31 ondalık sayılar) "C0 seti" olarak bilinen kontrol karakteri için ayırır: başlangıçta yazdırılabilir bilgileri temsil etmek için değil, ASCII kullanan cihazları (örneğin yazıcılar) kontrol etmek veya manyetik bantta depolananlar gibi veri akışları hakkında üst bilgi sağlamak için tasarlanmış kodlar. Bunlar satır sonu karakteri ("newline") ve tab karakteri gibi yaygın karakterleri içerir.

Latin-1 ve diğer ISO 8859 setleri gibi 8 bitlik karakter setlerinde, "üst yarının" (128 ila 159) ilk 32 karakteri de "C1 seti" olarak bilinen kontrol kodlarıdır. Nadiren doğrudan kullanılırlar; görünürde bir ISO 8859 kodlamasında olan belgelerde ortaya çıktıklarında, kod konumları genellikle Windows-1252 veya Mac OS Roman gibi özel, sisteme özgü bir kodlamadaki o konumdaki karakterlere atıfta bulunur, bunun yerine kodları ek grafik karakterleri sağlamak için kullanır.


Unicode, çift yönlü metin yön geçersiz kılma karakterleri (soldan sağa yazının içinde sağdan sola yazıyı açıkça işaretlemek için kullanılır) ve CJK ideogramları, emoji ve diğer karakterlerin alternatif biçimlerini seçmek için varyasyon seçicileri dahil olmak üzere ek kontrol karakterleri tanımlar.

Ayrıca bakınız
İkili veri
İkili dosya
İkili protokol
Kaynak kodu
Metin dosyası
Metin tabanlı protokol
Satır kaydırma ve kelime kaydırma

Kaynakça