Найти - Пользователи
Полная версия: Изменение кодировки файла в utf-8
Начало » Python для экспертов » Изменение кодировки файла в utf-8
1
ka8725
Имеется задача: перекодировать файл, содержимое которого в неизвестной кодировке, в другой файл, кодировка которого должна быть UTF-8. Помогите, плиз, разобраться с этой задачкой, а то у меня уже совсем голова пухнет - ниче не получается…
crchemist
http://python.su/forum/viewtopic.php?id=3109
bw
> содержимое которого в неизвестной кодировке
Тебе по каким то признакам нужно идентифицировать эту кодировку.
Можно решить задачу в лоб. Используя некоторое конечное число кодировок (utf-8, koi8-r, cp1251 и т.д.) декодировать исходный текст. Если не возникло ошибок (исключение UnicodeDecodeError) проанализировать текст на наличие, скажем, частоупотребляемых слов.

..bw
shiza
модуль - есть такой =)
http://chardet.feedparser.org/
Определяет кодировку. Весьма успешно юзаю.
Будут вопросы по использованию - задавай.
pythonwin
shiza, +1
Ps думаю вопросов не будет - там всё очень просто
ka8725
pythonwin
shiza, +1
Ps думаю вопросов не будет - там всё очень просто
Да, все предельно просто. Спасибо за ссылочку. Вещь очень полезная, я в Java такой не видел…
The gray Cardinal
shiza
модуль - есть такой smile
http://chardet.feedparser.org/
Определяет кодировку. Весьма успешно юзаю.
Будут вопросы по использованию - задавай.
Спасибо за ссылку :). Есть вопрос.
По утверждению разработчиков, объект UniversalDetector автоматически остановится, как только сможет достаточно уверено сообщить о результатах. Однако он, похоже, не останавливается. Например:
# -*- coding: utf-8 -*-
import urllib
from chardet.universaldetector import UniversalDetector

usock = urllib.urlopen('http://lib.ru/NICSHE/zaratustra.txt')
detector = UniversalDetector()
num = 0
for line in usock.readlines():
num += 1
detector.feed(line)
if detector.done:
print num
break
detector.close()
usock.close()
print detector.result
В этом примере “detector.done” никогда не истинно, текст долго и нудно хавается целиком.
shiza
The gray Cardinal
Да, у меня тоже с этой фичей незаладилось.
Нормально она срабатывает, только если какой-нибудь из UTF файлов с BOM ей подсунуть.
Еще есть над чем работать разработчикам =).

P.S. В тему. Я использую в работе собранную из кусочков библиотеку которая разспознает язык текста (типа там немецкий, китайский, русский).
Если кому-то она станет интересной - я ее причешу в боле-менее приличный вид и поделюсь. :)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB