Как указано в заголовке, я хотел бы убедиться, что в указанном файловом объекте (открытом в виде двоичного потока) находится действительный файл UTF-8.
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
Вы могли бы сделать что-то вроде
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"