[python] Kódování souborů

geon geon na post.cz
Neděle Prosinec 18 20:27:49 CET 2005


Ahoj,

Tak začnu tím co jsem zplodil a pak se zeptám, jestli něco takového 
existuje v lepší formě.

Chci "odhadnout" v jakém kodovani je uložen text v souborech. S pomocí 
http://cthedot.de/encutils/ jsem vyvtořil následující funkci, která 
odhaduje všechna možná kodování souborů v aktuálním adresáři:

# -*- coding: cp1250 -*-

def tryEncodings(text):
    encodings = (
        'ascii',
        'iso-8859-2',
        'cp1250',
        'utf-8'
        )
    encoding = []
    for e in encodings:
        try:
            text.decode(e) # fungovalo by i unicode(text,e)
        except (UnicodeEncodeError, UnicodeDecodeError):
            pass
        else:
            encoding.append(e)
    return encoding

import os, sys
seznam =[jmeno for jmeno in os.listdir('.') if os.path.isfile(jmeno)]

for jmeno in seznam:
    text=file(jmeno).read()
    print jmeno, tryEncodings(text)

Díky ViNilovi již znám i unixový příkaz/program  file, který umí to 
samé, ale asi mnohem lépe. Zná někdo nějaký takový i pro windows - nebo 
ještě lépe modul, který by to zvládal?

Díky

-- 
geon
Vyjímka je pravidlo. Rekurzivní.




Další informace o konferenci Python