Решено: Python&UTF-8: Как правильно читать файл в utf-8?

Модератор: Модераторы разделов

Аватара пользователя
thetosh
Сообщения: 6
ОС: Debian, FreeBSD

Решено: Python&UTF-8: Как правильно читать файл в utf-8?

Сообщение thetosh »

Добрый день.

На Питоне построчно читаю и обрабатываю текстовый файл, в котором встречаются строки в utf-8.
Читается номально, но при передаче строк в GUI получаются кракозябры. Почему так происходит, понятно -- питон думает, что это обычные ascii строки. Непонятно, как ему сказать, что это unicode-строки. Вызов unicode() не подходит, ибо строка и так уже в юникоде.

Файл открываю так: fp=open(fname), читаю из него построчно: line=fp.readline().

Чую, как-то это просто должно делаться, но как?... :unsure:

Локаль в системе: en_US.UTF-8; 'encoding: utf-8' в начале проги прописано.

Помогите, плз.

Best regards,
Anton V. Deinow
Спасибо сказали:
Аватара пользователя
BlackStar
Сообщения: 1338
Статус: We are all Kosh
ОС: Fedora 10

Re: Решено: Python&UTF-8: Как правильно читать файл в utf-8?

Сообщение BlackStar »

line.decode("utf-8") ?
LightLang Team
Спасибо сказали:
Аватара пользователя
baldman88
Сообщения: 233

Re: Решено: Python&UTF-8: Как правильно читать файл в utf-8?

Сообщение baldman88 »

В мобильном питоне одна из самых популярных функций :

Код: Выделить всё

def ru(expr) :
    return expr.decode("utf-8")

как вариант :

Код: Выделить всё

ru = lambda expr : expr.decode("utf-8")

потом просто :

Код: Выделить всё

 line = ru(fp.readline())
Спасибо сказали:
Аватара пользователя
thetosh
Сообщения: 6
ОС: Debian, FreeBSD

Re: Решено: Python&UTF-8: Как правильно читать файл в utf-8?

Сообщение thetosh »

Всем спасибо. Проблема решена. Найдено аж 3 варианта:

1) fp.readline().decode('utf-8')
2) codecs.open(fname,encoding='utf-8')
3) unicode(fp.readline(),'utf-8')

Best regards,
Anton V. Deinow
Спасибо сказали: