Португальское кодирование - PullRequest
0 голосов
/ 11 октября 2018

У меня есть этот код:

with open('dataset.csv', "w", encoding="utf-8") as myfile:
    print(datafromAPI.decode("utf-8"),file=myfile)

, который сохраняет файл .csv после декодирования набора данных с сервера данных через API, но кодировка не отображает правильный символ.Например, ã показывает à £, ê показывает ê, ç показывает ç, á показывает à ¡ и т. Д. Я попытался изменить, начиная с кодировки notepad ++ и внутри моего кода на python, используя utf-8, латиница-1, ISO 8859-1 и т. Д. Без эффекта.

Ответы [ 3 ]

0 голосов
/ 11 октября 2018

Как прокомментировал jedwards кодировка должна быть ISO 8859-1:

>>> "ã".encode('utf8').decode('iso-8859-1') 
'ã'

Так что вы можете попробовать декодировать текст с этой кодировкой.

0 голосов
/ 11 октября 2018

Мне придется разобраться в этом подробнее, но, возможно, print делает что-то странное с вашими строками на пути к файлу.

Поскольку вы знаете, datafromAPI - это bytes объект, рассмотрите возможность попробовать три два разных подхода ниже:

[write + текстовый режим]

with open('dataset.csv', "w", encoding="utf-8") as myfile:
    myfile.write(datafromAPI.decode("utf-8"))

[write + двоичный режим]

with open('dataset.csv', "wb") as myfile:
    myfile.write(datafromAPI)

Эта последняя версия, безусловно, будет работать, при условии, что вы откроете ее в редакторе, который поддерживает кодировку источника.

Обновление: удалил версию, в которой я не был уверен, что она будет работать - она ​​не будет.

0 голосов
/ 11 октября 2018

Возможно, ваш файл в порядке, но Notepad ++ открывает его, используя неправильную кодировку.

Обратите внимание, что в меню Кодировка есть две группы элементов:

  • Кодирование в UTF-8 будет интерпретировать текущие данные как UTF-8.При использовании этого элемента вы должны увидеть текст в редакторе.
  • Преобразовать в UTF-8 преобразует загруженные данные из текущей кодировки в UTF-8.

Загрузите файл, а затем проверьте текущую кодировку в строке состояния.Если он не отображает UTF-8, используйте «Кодировать в UTF-8», чтобы просмотреть его как UTF-8.

Вторая возможность заключается в том, что сервер неправильно применяет преобразование ISO 8859-1 в UTF-8 вданные, которые уже закодированы как UTF-8.В этом случае исправьте сервер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...