Как написать проверку в Python, чтобы увидеть, является ли файл UTF-8? - PullRequest
16 голосов
/ 17 июля 2010

Как указано в заголовке, я хотел бы убедиться, что в указанном файловом объекте (открытом в виде двоичного потока) находится действительный файл UTF-8.

Ответы [ 2 ]

21 голосов
/ 17 июля 2010
def try_utf8(data):
    "Returns a Unicode object on success, or None on failure"
    try:
       return data.decode('utf-8')
    except UnicodeDecodeError:
       return None

data = f.read()
udata = try_utf8(data)
if udata is None:
    # Not UTF-8.  Do something else
else:
    # Handle unicode data
8 голосов
/ 17 июля 2010

Вы могли бы сделать что-то вроде

import codecs
try:
    f = codecs.open(filename, encoding='utf-8', errors='strict')
    for line in f:
        pass
    print "Valid utf-8"
except UnicodeDecodeError:
    print "invalid utf-8"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...