самая безопасная кодировка Python на разных платформах

Мне нужно будет запустить некоторый код Python на разных платформах. Какой самый безопасный вариант с точки зрения кодирования исходных файлов?

Я заметил, что:

#!/bin/env python
# -*- coding: iso-8859-1 -*-
"""
Created on Wed Feb 22 09:40:16 2017
"""
pycode

не вызывает ошибок в Linux, в отличие от Windows. Следующее кажется более безопасным, почему это так?

#!/bin/env python
#-*- coding: utf-8 -*-
"""
Created on Wed Feb 22 09:40:16 2017
"""
pycode

person 00__00__00    schedule 27.11.2019    source источник
comment
Дело в том, что окна на самом деле не работают, просто иногда создается впечатление, что они работают. Все строки Python (и я имею в виду настоящий Python, а не бумер-python, который должен был умереть в тот момент, когда вышел Python3, также известный как настоящий и единственный Python) закодированы в Unicode, и большую часть времени вы следует использовать это в любом случае, если что-то не поддерживает юникод, оно, вероятно, даже не должно существовать в [текущий год].   -  person Sahsahae    schedule 27.11.2019
comment
Для Python 2 закодируйте и объявите исходные файлы как UTF-8 и убедитесь, что они сохранены как таковые, если они редактируются в средах, где UTF-8 не является кодировкой локали по умолчанию. Для Python 3 исходный файл по умолчанию считается UTF-8, поэтому объявление кодировки не требуется, но вы все равно должны позаботиться о том, чтобы они правильно сохранялись в локалях, отличных от UTF-8.   -  person snakecharmerb    schedule 27.11.2019
comment
интересно. Не могли бы вы дать ответ? Кроме того, является ли utf самым безопасным?   -  person 00__00__00    schedule 27.11.2019
comment
ребята, вы должны сделать ответ из этого   -  person 00__00__00    schedule 27.11.2019
comment
UTF-8 безопаснее в том смысле, что он может кодировать любую кодовую точку Unicode, тогда как latin-1 как 8-битная кодировка не может.   -  person snakecharmerb    schedule 27.11.2019


Ответы (1)


Ожидается, что исходный код Python 3 будет закодирован как UTF-8 по умолчанию . Поэтому UTF-8 — самая безопасная кодировка для кода Python 3, потому что разработчикам не нужно ничего помнить, например, объявлять спецификацию.

  • это значение по умолчанию, поэтому разработчикам не нужно помнить об объявлении явной кодировки
  • он может кодировать любую кодовую точку Unicode, поэтому (теоретически) нет риска того, что разработчик может использовать другую кодировку в конкретном источнике для включения определенного символа.

Однако если исходный код редактируется в системах, где UTF-8 не является кодировкой по умолчанию, разработчики должны позаботиться о том, чтобы исходный код был сохранен как UTF-8.

То же самое относится к Python 2, за исключением того, что объявление кодировки требуется, если будет использоваться UTF-8.

Наличие достаточно полного набора тестов значительно снизит риск неправильно закодированных исходных файлов, так как импорт такого файла вызовет ошибку SyntaxError. Если в коде не хватает тестов, нетрудно написать скрипт, который ищет .py файлов, пытается открыть их, указав в качестве кодировки UTF-8, и выдает отчет обо всех, вызвавших UnicodeDecodeError

person snakecharmerb    schedule 27.11.2019