ISO dışı genişletilmiş ASCII metni


3

kullanarak all.txt dosyasının kodlamasını bilmeye çalıştığımda

$ file all.txt

bu mesajı gösterir

all.txt: Non-ISO extended-ASCII text, with very long lines

Bu kodlamanın ISO dışı genişletilmiş ASCII metni nedir?

çünkü başka bir kodlamaya dönüştürmem gerekiyor, bu yüzden bu dosyanın kodlamasını bilmem gerekiyor

herhangi bir yardım?

Yanıtlar:


6

Utf-8 veya iso-8859-1 gibi görünmeyen bir şeydir. Başka bir şey olabilir. Hiç bir metin bile olmayabilir. Bu tür, sıfır bayt içermeyen bir şey için geri dönüş açıklamasıdır.

Aslında bir metin dosyası olsa bile (uzantı olabileceğini öne sürüyor), ne yazık ki kodlamayı bulmanın otomatik bir yolu yoktur, çünkü çoğu kodlamanın aynı geçerli kod aralığına sahip olması gerekir. Utf-8'e çok yüksek güven ile ayrı ayrı söylenebilir, ancak bunun ötesinde manuel kontrol gerektirir.

Öncelikle, doğru içeriğin ne olduğu ve bozuk içeriğin ne olduğu hakkında fikir sahibi olmak ve olası kodlamaların bir listesine sahip olmak için dosyanın hangi dilde olduğunu bulmak zorundasınız. Zilyonlarca kodlama olduğundan, herhangi bir dil için yalnızca birkaçı kullanılmıştır.

Daha sonra dosyayı mümkün olan her kodlamadan ve teknik olarak başarılı olan her bir dönüşüm için (ki ne yazık ki çoğu olacaktır) dönüştürmeyi denemelisiniz, sonucu görüntüleyin ve doğru olup olmadığını kontrol edin.

Yazım denetleyici incelemede size yardımcı olabilir, çünkü yanlış dönüştürmeler daha fazla yazım denetleyici hatasına neden olur.

Dönüşüm için, libu paketinden GNU / Linux'ta kurulu iconv(1) kullanabilirsiniz recode. recodedaha fazla seçenek ve daha iyi hata yönetimi var.


Bu cevap aslında şimdiye kadar gördüğüm tüm alanı en ikna edici, özlü, kullanışlı bakıştır
John Bachir

6

Bu bir yoruma uymayacak, işte burada: Elimde tuhaf bir dosya vardı:

$ dosya systeminfo.txt 
systeminfo.txt: ISO dışı genişletilmiş ASCII metni

Bunun bir Alman WindowsXP kurulumu tarafından üretildiğini ve bazı ümitler içerdiğini iconv, ancak mantıklı bir şeye dönüştüremediğini biliyordum:

$ iconv -t UTF-8 systeminfo.txt> systeminfo_utf8.txt 
iconv: 308 konumundaki yasadışı giriş dizisi

Ancak iconvbirçok kodlamayı bildiğinden beri , çalışan bir kaynak kodlamasını bulmak için kaba kuvvet yaklaşımı kullandım :

$ iconv - list | sed 's / \ / \ / $ //' | sort> encodings.list
bir kedi kodlaması.listesi için $; yap
  printf "$ a"
  iconv -f $ a -t UTF-8 systeminfo.txt> / dev / null 2> & 1 \
    && echo "ok: $ a" || echo "başarısız: $ a"
bitti | tee sonucu.txt

Sonra geçip başarısız olmayanresult.txt kodlamayı arardım. Benim durumumda, gayet iyi çalıştı ve umlautlar hala oradalar, ancak şimdi UTF-8 :-) ile kodlandılar.-f CP850 -t UTF-8

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.