d3coy_00
@d3coy_00

Проблема с переводом файлов в другую кодировку?

Есть текст в кодировке UTF-8(BOM), так показывает notepad++ по-крайней мере, нужно перевести его в cp1251, при указании кодировки "utf-8-sig" на открытии получаю:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xcc in position 134: invalid continuation byte


при указании utf-8:

UnicodeEncodeError: 'charmap' codec can't encode character '\ufeff' in position 0: character maps to


при указании ISO-8859-1:

UnicodeEncodeError: 'charmap' codec can't encode character '\xef' in position 0: character maps to


Сам исходник:

import codecs
import os

path = os.getcwd() + "\\files\\"
path_out = os.getcwd() + "\\files\\result_files\\"
print(path)
print(path_out)
array = []

def primary():
  for filename in os.listdir(path):
    print(filename)
    #read input file
    with codecs.open(path+filename, 'r', encoding="ISO-8859-1") as file:
      lines = file.read()

    try:
      #write output file
      with codecs.open(path_out+filename, 'w', encoding = 'cp1251') as file:
        file.write(lines)

    except FileNotFoundError:
      print("[ERROR] No file created")

if __name__ == '__main__':
  primary()


Скажите пожалуйста что я делаю не так как этот код исправить?
Файл :
https://dropmefiles.com/cqGSg
  • Вопрос задан
  • 1094 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Andy_U
Ну, если подсказки Dr. Bacon вам не помогли, то вот рабочий код:

if __name__ == '__main__':

    with open('acda010.ditamap', encoding='utf-8-sig') as file:
        cc = ''.join(file.readlines())

    with open('a.txt', 'w', encoding='cp1251') as file:
        print(cc, end='', file=file)

Под Windows, если русская локаль установлена, параметр encoding при записи не нужен.

P.S. Но сохранять XML-файл, в заголовке которого указана кодировка UTF-8, в кодировке 1251 это странно.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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