Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 2, 2012 00:21:54

Guljaca
От:
Зарегистрирован: 2011-07-11
Сообщения: 93
Репутация: +  0  -
Профиль   Отправить e-mail  

Utf-8, чтение текстового файла

test.py и dialog.txt в кодировке Utf_8
Все равно пишет:
UnicodeDecodeError: ‘ascii’ codec can't decode byte 0xef in position 0: ordinal not in range(128)

В чем проблема? Как ее решить?

dialog = open('dialog.txt','r')
dialog = dialog.read()
if key == u'Ввести':
    txt = self.quest.text()
    if txt in dialog:
         print 1
ini читает
config = ConfigParserFix.ConfigParser()
config.readfp(codecs.open('dialog.ini', "r", "utf-8-sig"))



Отредактировано Guljaca (Окт. 2, 2012 00:22:51)

Офлайн

#2 Окт. 2, 2012 01:27:57

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

Utf-8, чтение текстового файла

Очевидно же. dialog.read() возвращает str, а в txt у тебя, скорее всего, unicode.

Офлайн

#3 Окт. 2, 2012 12:02:18

Guljaca
От:
Зарегистрирован: 2011-07-11
Сообщения: 93
Репутация: +  0  -
Профиль   Отправить e-mail  

Utf-8, чтение текстового файла

odnochlen
Очевидно же. dialog.read() возвращает str, а в txt у тебя, скорее всего, unicode.

Так я пробовал вводить unicode(dialog.read()) - та же ошибка
Ок:
dialog = open('dialog.txt','r')
dialog = dialog.read()
dialog = unicode(dialog,'utf-8')



Отредактировано Guljaca (Окт. 2, 2012 12:16:04)

Офлайн

#4 Окт. 2, 2012 13:39:28

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Utf-8, чтение текстового файла

# -*- coding:utf-8 -*-

?



Офлайн

#5 Окт. 2, 2012 17:26:10

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

Utf-8, чтение текстового файла

А в dialog валидный utf8 без BOM?

Он случайно не на кодировку исходника матерится?

Отредактировано odnochlen (Окт. 2, 2012 17:30:21)

Офлайн

#6 Окт. 2, 2012 22:58:46

Guljaca
От:
Зарегистрирован: 2011-07-11
Сообщения: 93
Репутация: +  0  -
Профиль   Отправить e-mail  

Utf-8, чтение текстового файла

FishHook
# -*- coding:utf-8 -*-
Что делает эта строка? Я всегда думал, что она просто для удобства - показывает кодировку файла.

odnochlen
А в dialog валидный utf8 без BOM?
Не понимаю смысла этой фразы.

Так-то решение уже есть выше.



Офлайн

#7 Окт. 2, 2012 23:04:13

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

Utf-8, чтение текстового файла

Guljaca
Я всегда думал, что она просто для удобства - показывает кодировку файла.
Не показывает, а задает.

Guljaca
Так-то решение уже есть выше.
Это?

Guljaca
Ок:
dialog = open('dialog.txt','r')
dialog = dialog.read()
dialog = unicode(dialog,'utf-8')
Тогда стоило бы яснее выразиться.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version