Testo ASCII esteso non ISO


3

quando ho provato a conoscere la codifica del file all.txt usando

$ file all.txt

mostra questo messaggio

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

qual è il tipo di codifica di testo ASCII esteso non ISO?

perché devo convertirlo in un'altra codifica, quindi devo conoscere la codifica di questo file

qualsiasi aiuto?

Risposte:


6

È qualcosa che non assomiglia né a utf-8 né a iso-8859-1. Potrebbe essere qualcos'altro. Potrebbe anche non essere affatto un testo. Questo tipo è una specie di descrizione fallback per tutto ciò che non contiene zero byte.

Anche se in realtà è un file di testo (l'estensione suggerisce che potrebbe essere), sfortunatamente non esiste un modo automatico per scoprire la codifica, poiché la maggior parte delle codifiche ha lo stesso intervallo di codici validi. Utf-8 può essere distinto con estrema sicurezza, ma oltre a ciò richiede un controllo manuale.

Per prima cosa devi scoprire in che lingua è il file per avere un'idea di cosa sia il contenuto corretto e cosa sia confuso e di avere un elenco di possibili codifiche. Perché ci sono miliardi di codifiche, ma solo pochi sono stati usati per una lingua particolare.

Quindi devi provare a convertire il file da ogni possibile codifica e per ogni conversione che ha successo tecnicamente (che sfortunatamente sarà la maggior parte di essi) visualizza il risultato e controlla se è corretto o meno.

Un controllo ortografico potrebbe aiutarti con la revisione, poiché conversioni errate porteranno a più errori del controllo ortografico.

Per la conversione, puoi usare iconv(1) , che è installato dal pacchetto libc su GNU / Linux o recode. recodeha più opzioni e una migliore gestione degli errori.


questa risposta è in realtà la panoramica più convincente, concisa e utile dell'intero spazio che io abbia mai visto
John Bachir,

6

Questo non si adatta a un commento, quindi eccolo qui: anch'io avevo uno strano file tra le mani:

$ file systeminfo.txt 
systeminfo.txt: testo ASCII esteso non ISO

Sapevo che questo era stato generato da un'installazione tedesca di Windows XP e conteneva alcune dieresi, ma iconvnon sono riuscito a convertirlo in qualcosa di sensato:

$ iconv -t UTF-8 systeminfo.txt> systeminfo_utf8.txt 
iconv: sequenza di input illegale nella posizione 308

Ma dal momento che iconvconosce così tante codifiche ho usato un approccio a forza bruta per scoprire una codifica sorgente funzionante :

$ iconv --list | sed 's / \ / \ / $ //' | ordina> encodings.list
$ per a in `cat encodings.list`; fare
  printf "$ a"
  iconv -f $ a -t UTF-8 systeminfo.txt> / dev / null 2> & 1 \
    && echo "ok: $ a" || echo "fail: $ a"
fatto | tee result.txt

Quindi andrei a result.txtcercare la codifica che non ha fallito. Nel mio caso, ha -f CP850 -t UTF-8funzionato bene e le umlaut sono ancora lì, solo ora codificate in UTF-8 :-)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.