[python] Kódování souborů

Martin Blazik martin.blazik na premiumsms.cz
Pondělí Prosinec 19 08:20:54 CET 2005


Cusik,
tenhle algoritmus ma ale jeden problem. U vetsiny textu dostanes nekolik
moznych kodovani. Podobny problem jsem uz pred mnoha lety resil v jinem
prog jazyce a postupoval jsem tak, ze jsem v kazdem typu kodovani
pocital znaky s diakritikou. Vyhralo to kodovani, ktere jich melo
nejvice. Ani tato metoda neni 100%, ale pro vetsinu pripadu dava pomerne
dobre vysledky.

lachtan

geon napsal(a):

> 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
>



Další informace o konferenci Python