GNU/Linux >> Znalost Linux >  >> Linux

Jak automaticky detekovat kódování textového souboru?

Vyzkoušejte modul chardet Python, který je dostupný na PyPI:

pip install chardet

Poté spusťte chardetect myfile.txt .

Chardet je založen na detekčním kódu používaném Mozillou, takže by měl poskytovat rozumné výsledky za předpokladu, že vstupní text je dostatečně dlouhý pro statistickou analýzu. Přečtěte si projektovou dokumentaci.

Jak bylo zmíněno v komentářích, je to docela pomalé, ale některé distribuce také dodávají původní verzi C++, jak nalezl @Xavier na https://superuser.com/a/609056. Někde je také verze Java.


Použil bych tento jednoduchý příkaz:

encoding=$(file -bi myfile.txt)

Nebo pokud chcete pouze skutečnou znakovou sadu (například utf-8 ):

encoding=$(file -b --mime-encoding myfile.txt)

Na Linuxu založeném na Debianu poskytuje balíček uchardet (Debian / Ubuntu) nástroj příkazového řádku. Viz níže popis balíčku:

 universal charset detection library - cli utility
 .
 uchardet is a C language binding of the original C++ implementation
 of the universal charset detection library by Mozilla.
 .
 uchardet is a encoding detector library, which takes a sequence of
 bytes in an unknown character encoding without any additional
 information, and attempts to determine the encoding of the text.
 .
 The original code of universalchardet is available at
 http://lxr.mozilla.org/seamonkey/source/extensions/universalchardet
 .
 Techniques used by universalchardet are described at
 http://www.mozilla.org/projects/intl/UniversalCharsetDetection.html

Linux
  1. Jak snadno přidat text na konec souboru v Linuxu

  2. Jak najít nesrovnatelné závorky v textovém souboru?

  3. Jak analyzovat každý řádek textového souboru jako argument příkazu?

  1. Jak odstraním nové řádky z textového souboru?

  2. Jak vložit text na začátek souboru?

  3. Jak připojím text k souboru?

  1. Jak přidat text na konec souboru v Linuxu

  2. Jak převést soubory do kódování UTF-8 v Linuxu

  3. Jak odstranit duplicitní řádky uvnitř textového souboru?