Форум сайта python.su
Всем привет!
у меня есть много-много файлов (в основном текстовых). Тескт в этих файлах может быть в разных кодировках, но один файл = одна кодировка. Нужно эти все файлы перекодировать в utf-8. Как лучше это сделать?
использовать encodings._aliases и прогонят по циклу проверяя на decode (UnicodeDecodeError)
пример
>>> s1=unicode('Тест', ‘cp1251’)
>>> a1=s1.encode('cp1251')
>>> d = encodings._aliases
>>> d = encodings._aliases
>>> for k in d:
… try:
… a2 = a1.decode(k)
… print k, ‘ | ’, a2
… except UnicodeDecodeError: pass
… except Exception, msgs: print msgs
…
1140 | }s}§JaJb
tis620 | ะขะต
iso8859 | ТеÑÑ
iso_celtic | ŴḃŴṁÑÑ
ebcdic_cp_wt | }s}§JaJb
csibm863 | Тест
ebcdic_cp_he | }s}§JaJb
cp936 | 孝械褋褌
iso_8859_5_1988 | аЂаЕбб
maccyrillic | –¢–µ—Б—В
csibm857 | ºóºÁªüªé
csibm855 | лблхЛЂЛѓ
ibm1140 | }s}§JaJb
csibm1026 | ğsğ§JaJb
rot13 | ТеÑÑ
tis_620_2529_1 | ะขะต
ecma_118 | Π’Π΅ΡΡ
ibm1026 | ğsğ§JaJb
utf_16le | ꋐ뗐臑苑
csibm500 | }s}§JaJb
iso_8859_11 | ะขะต
cspc862latinhebrew | ╨ó╨╡╤ב╤ג
tis_620_2529_0 | ะขะต
iso_ir_199 | ŴḃŴṁÑÑ
ibm424 | }s}§JaJb
l5 | ТеÑÑ
ibm500 | }s}§JaJb
csibm860 | Тест
csibm861 | Тест
csibm866 | ╨в╨╡╤Б╤В
csibm864 | ﺫﺂﺫ٥ﺭ·ﺭ∙
csibm865 | Тест
maccentraleurope | –Ę–Ķ—Ā—ā
iso_8859_16_2001 | йДŃŃ
ibm857 | ºóºÁªüªé
ibm855 | лблхЛЂЛѓ
l2 | ТоŃŃ
ibm852 | đóđÁĐüĐé
ibm850 | ðóðÁÐüÐé
quopri | Тест
l8 | ŴḃŴṁÑÑ
utf16 | ꋐ뗐臑苑
utf_16be | 킢킵톁톂
Error -3 while decompressing data: incorrect header check
thai | ะขะต
gb18030_2000 | 孝械褋褌
ebcdic_cp_us | }s}§JaJb
ibm437 | Тест
cp1361 | 햑햣혜혝
ebcdic_cp_nl | }s}§JaJb
csisolatin1 | ТеÑÑ
csisolatin2 | ТоŃŃ
csisolatin4 | ĐĸĐĩŅŅ
037 | }s}§JaJb
csisolatin6 | ÐĒÐĩŅŅ
l6 | ÐĒÐĩŅŅ
iso_8859_10_1992 | ÐĒÐĩŅŅ
quoted_printable | Тест
l10 | йДŃŃ
l4 | ĐĸĐĩŅŅ
iso_ir_110 | ĐĸĐĩŅŅ
1256 | ذ¢ذµرپر‚
1251 | Тест
cskoi8r | п╒п╣я│я┌
424 | }s}§JaJb
latin | ТеÑÑ
ms1361 | 햑햣혜혝
l1 | ТеÑÑ
cspc850multilingual | ðóðÁÐüÐé
base_64 |
u8 | Тест
ibm039 | }s}§JaJb
greek8 | Π’Π΅ΡΡ
r8 | ÅÂÅçîî
ibm037 | }s}§JaJb
Missing “begin” line in input data
437 | Тест
cspc8codepage437 | Тест
iso_ir_226 | йДŃŃ
iso_ir_100 | ТеÑÑ
base64 |
cp_is | Тест
unknown encoding: tis260
maclatin2 | –Ę–Ķ—Ā—ā
855 | лблхЛЂЛѓ
857 | ºóºÁªüªé
850 | ðóðÁÐüÐé
852 | đóđÁĐüĐé
ms936 | 孝械褋褌
Non-hexadecimal digit found
iso_8859_7 | Π’Π΅ΡΡ
windows_1251 | Тест
csibm424 | }s}§JaJb
ibm866 | ╨в╨╡╤Б╤В
ibm864 | ﺫﺂﺫ٥ﺭ·ﺭ∙
ibm865 | Тест
ibm862 | ╨ó╨╡╤ב╤ג
ibm863 | Тест
ibm860 | Тест
ibm861 | Тест
iso_8859_9_1989 | ТеÑÑ
windows_1256 | ذ¢ذµرپر‚
unicodelittleunmarked | ꋐ뗐臑苑
iso_ir_126 | Π’Π΅ΡΡ
1026 | ğsğ§JaJb
utf | Тест
861 | Тест
860 | Тест
863 | Тест
862 | ╨ó╨╡╤ב╤ג
865 | Тест
864 | ﺫﺂﺫ٥ﺭ·ﺭ∙
866 | ╨в╨╡╤Б╤В
utf8_ucs4 | Тест
ibm819 | ТеÑÑ
500 | }s}§JaJb
utf8_ucs2 | Тест
u16 | ꋐ뗐臑苑
936 | 孝械褋褌
cp819 | ТеÑÑ
iso_8859_9 | ТеÑÑ
elot_928 | Π’Π΅ΡΡ
iso_ir_101 | ТоŃŃ
iso_8859_5 | аЂаЕбб
iso_8859_4 | ĐĸĐĩŅŅ
iso_8859_2 | ТоŃŃ
iso_8859_1 | ТеÑÑ
iso_8859_7_1987 | Π’Π΅ΡΡ
iso_ir_166 | ะขะต
iso_8859_2_1987 | ТоŃŃ
latin10 | йДŃŃ
cp154 | РўРөСҒСӮ
roman8 | ÅÂÅçîî
invalid data stream
cspc775baltic | ąóąĄčüčé
cyrillic | аЂаЕбб
iso_8859_14_1998 | ŴḃŴṁÑÑ
utf8 | Тест
csisolatin5 | ТеÑÑ
cspcp852 | đóđÁĐüĐé
iso_8859_16 | йДŃŃ
iso_8859_15 | ТеÑÑ
iso_8859_14 | ŴḃŴṁÑÑ
iso_8859_13 | ТеŃŃ
iso_ir_157 | ÐĒÐĩŅŅ
iso_8859_10 | ÐĒÐĩŅŅ
ebcdic_cp_ch | }s}§JaJb
ebcdic_cp_be | }s}§JaJb
macgreek | –Δ–Β―¹―²
unknown encoding: cyrillic-asian
csibm037 | }s}§JaJb
775 | ąóąĄčüčé
iso_8859_4_1988 | ĐĸĐĩŅŅ
maciceland | –¢–µ—Å—Ç
csisolatingreek | Π’Π΅ΡΡ
csisolatincyrillic | аЂаЕбб
quotedprintable | Тест
csptcp154 | РўРөСҒСӮ
pt154 | РўРөСҒСӮ
macturkish | –¢–µ—Å—Ç
ibm775 | ąóąĄčüčé
latin4 | ĐĸĐĩŅŅ
latin5 | ТеÑÑ
latin6 | ÐĒÐĩŅŅ
latin1 | ТеÑÑ
latin2 | ТоŃŃ
macroman | –¢–µ—Å—Ç
iso_8859_1_1987 | ТеÑÑ
iso_8859_11_2001 | ะขะต
latin8 | ŴḃŴṁÑÑ
greek | Π’Π΅ΡΡ
8859 | ТеÑÑ
iso_ir_144 | аЂаЕбб
unicodebigunmarked | 킢킵톁톂
iso_ir_148 | ТеÑÑ
ebcdic_cp_ca | }s}§JaJb
tis_620_0 | ะขะต
как видно из примера - мне вывело почти во всех кодировках.
Офлайн
Офлайн
j2a, спасибо
Офлайн
В гугле погулить не пробывали?
Офлайн