Как прочесть файл в utf-8 в Python?

Здравствуйте.
Создаю файл text.txt с текстом в кодировке utf-8.
В Питоне пишу:
f = open("text.txt", "r", encoding="utf-8")
print(f.read())
f.close()


При запуске файла в консоли выдается ошибка:
UnicodeEncodeError: 'charmap' codec can't encode character u'\ufeff' in position 0: character maps to

Как правильно читать файлы в utf-8?
  • Вопрос задан
  • 40980 просмотров
Решения вопроса 2
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
Дык а зачем BOM-символ удалять-то? Зачем лишняя ручная работа? Читайте с ним:
import io
import chardet
import os
import codecs

filename = 'test_file.txt'

bytes = min(32, os.path.getsize(filename))
raw = open(filename, 'rb').read(bytes)

if raw.startswith(codecs.BOM_UTF8):
    encoding = 'utf-8-sig'
else:
    result = chardet.detect(raw)
    encoding = result['encoding']

infile = io.open(filename, 'r', encoding=encoding)
data = infile.read()
infile.close()

print(data)
Ответ написан
alsopub
@alsopub
Подозреваю у вас в начале файла есть UTF-8 BOM символ.
Удалите его из файла.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Nikon_NLG
# -*- coding: utf-8 -*-
Указали в начале кода?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы