отличается питон между utf-8 и utf-8 BOM? - PullRequest
0 голосов
/ 18 апреля 2019

У меня есть задача проверить кодировку файла.На самом деле, моя проблема в форматах кодирования, которые предоставляет python в своей функции encoding.Я очень плохо знаком с Python, поэтому думаю, что я что-то упустил.

Я не могу понять следующие моменты:

  • Когда я кодирую файл, которыйимеет формат utf-8 BOM, тогда функция кодирования сообщает мне, что это utf-8.

  • Когда я проверяю формат iso8859_6, он говорит мне, что он не может распознатьэтот формат, хотя файл имеет формат iso8859_6, но в случае, если я проверил «cp720», он сможет его распознать

Согласно этой документации , ондолжен иметь возможность распознавать формат iso8859_6

Я пытался найти что-то понятное в www, но не смог найти что-либо.

import codecs
import io

class Format:

    def __init__(self, file_Name):
        self.file_Name = file_Name

    def check_coding(self):

        encoding_formats = ['iso8859_6','utf-8', 'utf-8-sig', 'ascii']


        for ex in encoding_formats:
            try: 
                fh = codecs.open(self.file_Name, 'r', encoding=ex)

                fh.readlines()
                fh.close()

            except UnicodeDecodeError:
                    print('Die angelieferte Datei ist nicht nach %s  kodiert' % ex)
                    response = False;
            else:
                print('Angelieferte Datei besitzt folgende Kodierung:  %s ' % ex)
                response = True;
                break

        return response

file_Name формат utf-8 BOM, поэтому он не должен сказать мне, что это utf-8.

, если формат file_Names равен iso8859_6, он говорит мне, что он не закодирован в этом формате, хотя он и есть.

...