Bazı metin dosyaları kod çözme yöntemi daha sonra kod çözme için metin içeriği boyunca depolamak merak ediyordum?
Mark Szymanski'nin cevabı doğrudur - düz bir metin dosyasında açık bir kodlama bilgisi yoktur - bu "düz metin dosyası" tanımıdır, "düz", dosyada meta veri olmadığı gerçeğini ifade eder.
Ancak, bazı uygulamalar UTF-16 veya UTF-32 / UCS-4 olarak kodlanan metin dosyalarına bir bayt sırası işareti (BOM) yerleştirir. BOM gerçekten kodlamayı belirtmek için değildir (adın söylediği gibi bayt sırasını gösterir), ancak birçok uygulama UTF-16 / UTF-32'yi tanımak için BOM'un varlığını kullanır, bu nedenle bir kodlama göstergesi olarak hizmet eder.
Yoksa belirli bir metin dosyasının kodlama yöntemini tahmin etmek metin görüntüleyicinin işi midir ve tahmin her zaman doğru olmayabilir mi? Evet ise, bir metin görüntüleyici bunu nasıl tahmin eder?
Evet, metin görüntüleyici yalnızca tahmin edebilir. Genellikle bazı buluşsal yöntemler kullanır:
- Bazı kodlamalarda (özellikle UTF-8'de) tüm bayt dizileri geçerli değildir. Yani bir uygulama dosyayı UTF-8 olarak çözmeyi deneyebilir. Başarılı olursa, dosya muhtemelen UTF-8'dir; geçersiz bir bayt dizisi bularak başarısız olursa, değildir. Örneğin
vim
, varsayılan olarak şu şekilde çalışır: Bir dosyayı okurken önce UTF-8'i kullanmaya çalışır; bu başarısız olursa, ISO-8859-1'e geri döner.
- Çoğu eski 8-bit kodlamada, herhangi bir bayt sırası geçerlidir. Bu durumda, bazen bayt histogramına (farklı bayt / bayt dizilerinin sıklığı) bakarak kodlamayı tahmin edebilirsiniz. Internet Explorer bunu bir sayfanın kodlamasını "tahmin etmek" için kullanıyordu. Ancak, bu çok hataya açıktır, bu nedenle az sayıda program bunu yapar.
Çoğu durumda, bir programa bir metin dosyasının kodlamasının ne olduğu açık bir şekilde söylenmelidir, aksi takdirde dosyayı doğru okuyamaz.