Hướng dẫn python check if file is utf-8 - python kiểm tra xem tệp có phải là utf-8 không

Như đã nêu trong tiêu đề, tôi muốn kiểm tra đối tượng tệp đã cho (được mở dưới dạng luồng nhị phân) là tệp UTF-8 hợp lệ.

Anyone?

Cảm ơn

Hướng dẫn python check if file is utf-8 - python kiểm tra xem tệp có phải là utf-8 không

MALAT

11.6K13 Huy hiệu vàng81 Huy hiệu bạc143 Huy hiệu đồng13 gold badges81 silver badges143 bronze badges

hỏi ngày 16 tháng 7 năm 2010 lúc 22:33Jul 16, 2010 at 22:33

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

Đã trả lời ngày 16 tháng 7 năm 2010 lúc 22:53Jul 16, 2010 at 22:53

Daniel Stutzbachdaniel StutzbachDaniel Stutzbach

71.5K17 Huy hiệu vàng85 Huy hiệu bạc76 Huy hiệu đồng17 gold badges85 silver badges76 bronze badges

1

Bạn có thể làm một cái gì đó như

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"

Đã trả lời ngày 16 tháng 7 năm 2010 lúc 22:39Jul 16, 2010 at 22:39

Michaelmichaelmichael

4513 Huy hiệu bạc7 Huy hiệu Đồng3 silver badges7 bronze badges

1

Nếu bất kỳ ai cần một tập lệnh để tìm tất cả các tệp không UTF-8 trong DIR: Nhập hệ điều hành

def try_utf8(data):
    try:
        return data.decode('utf-8')
    except UnicodeDecodeError:
        return None


for root, _, files in os.walk('.'):
    if root.startswith('./.git'):
        continue
    for file in files:
        if file.endswith('.pyc'):
            continue
        path = os.path.join(root, file)
        with open(path, 'rb') as f:
            data = f.read()
            data = try_utf8(data)
            if data is None:
                print(path)

Đã trả lời ngày 13 tháng 6 lúc 17:22Jun 13 at 17:22

VulwsztynvulwsztynVulwsztyn

1.9531 Huy hiệu vàng9 Huy hiệu bạc17 Huy hiệu đồng1 gold badge9 silver badges17 bronze badges

Kiểm tra xem một tệp có chứa UTF-8 hợp lệ không. Trả về 0 cho UTF-8 hợp lệ, in thông báo lỗi cho stdout và trả về 1 cho không hợp lệ.

Tệp này chứa văn bản unicode hai chiều có thể được giải thích hoặc biên dịch khác với những gì xuất hiện dưới đây. Để xem xét, hãy mở tệp trong một trình soạn thảo cho thấy các ký tự Unicode ẩn. Tìm hiểu thêm về các ký tự unicode hai chiều

#!/usr/bin/env Python
# Kiểm tra xem tệp có chứa UTF-8 hợp lệ không
# Từ http://stackoverflow.com/a/3269323
Nhập khẩu codecs
Nhập khẩu sys
Nhập khẩu os
DEFCHECKFILE (tên tệp): checkFile(filename):
thử::
withcodecs.open (tên tệp, mã hóa = 'utf-8', lỗi = 'nghiêm ngặt') ASF: codecs.open(filename, encoding='utf-8', errors='strict') as f:
forlineinf: line in f:
đi qua
return0 0
ngoại trừ: IOError as e:
sys.stderr.write ('io lỗi: %s \ n' %e).stderr.write('IO error: %s\n' % e)
return2 2
ngoại trừ UnicodeDecodeError:
sys.stdout.write ('%s chứa UTF-8 \ n'%tên gọi không hợp lệ).stdout.write('%s contains invalid UTF-8\n' % filename)
return1 1
if__name __ == '__ main__': __name__ == '__main__':
iflen (sys.argv)! = 2: len(sys.argv) != 2:
P = sys.argv [0] = sys.argv[0]
sys.stderr.write ('sử dụng:' +p [p.rfind ('/') +1:] +'\ n')).stderr.write('Usage: ' + p[p.rfind('/') + 1:] + ' \n')
sys.exit (2).exit(2)
r = CheckFile (sys.argv [1]) = checkFile(sys.argv[1])
sys.exit (r).exit(r)

Làm thế nào để tôi biết nếu một tệp là UTF

Có thể đơn giản hơn bằng cách chỉ sử dụng một dòng: codecs.open ("đường dẫn/to/file", mã hóa = "utf-8", error = "nghiêm ngặt"). Readlines () thay vì 3.codecs. open("path/to/file", encoding="utf-8", errors="strict"). readlines() instead of 3.

Làm thế nào tôi có thể biết nếu một tệp là UTF

Để xác minh xem một tệp có truyền mã hóa như ASCII, ISO-8859-1, UTF-8 hoặc bất cứ điều gì sau đó một giải pháp tốt là sử dụng lệnh 'ICONV'.use the 'iconv' command.

Python có sử dụng UTF không

UTF-8 là một trong những mã hóa được sử dụng phổ biến nhất và Python thường mặc định sử dụng nó.UTF là viết tắt của định dạng chuyển đổi Unicode, và '8' có nghĩa là các giá trị 8 bit được sử dụng trong mã hóa.(Ngoài ra còn có mã hóa UTF-16 và UTF-32, nhưng chúng ít được sử dụng hơn UTF-8.)Python often defaults to using it. UTF stands for “Unicode Transformation Format”, and the '8' means that 8-bit values are used in the encoding. (There are also UTF-16 and UTF-32 encodings, but they are less frequently used than UTF-8.)

Làm cách nào để mở một mã hóa tệp trong Python?

Mở tệp văn bản để mở tệp, bạn có thể sử dụng hàm Open in () tích hợp của Python.Bên trong các dấu ngoặc đơn hàm mở (), bạn chèn filepath để được mở trong các dấu ngoặc kép.Bạn cũng nên chèn một mã hóa ký tự, mà chúng ta sẽ nói thêm về bên dưới.Hàm này trả về cái gọi là đối tượng tệp.use Python's built-in open() function. Inside the open() function parentheses, you insert the filepath to be opened in quotation marks. You should also insert a character encoding, which we will talk more about below. This function returns what's called a file object.