[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