В чем разница между sys.stdout.encoding, locale.getpreferredencoding() и sys.getdefaultencoding()?

Я новичок в python и действительно запутался в этом кодировании. До сих пор я читал о следующих типах «кодирования»:

import sys
import locale

print (sys.stdout.encoding)
print (locale.getpreferredencoding())
print (sys.getdefaultencoding())

выход:

utf8
cp1252
utf-8

В чем разница?


person user3685285    schedule 27.12.2016    source источник


Ответы (1)


Проще говоря, кодирование — это способ хранения ваших данных в памяти. Различные способы позволяют использовать больше символов и информации. Для более подробного объяснения вы можете прочитать либо http://kunststube.net/encoding/ или Википедия

В python вы можете изменить способ хранения вещей, либо физически вызвав тип кодировки, либо используя любой из функция кодирования.

Для вашей среды python3.x нет разницы между sys.stdout.encoding и sys.getdefaultencoding(). Оба они используют 8-битные кодовые единицы (наиболее стандартные). В то время как предпочтительная кодировка, locale.getpreferredencoding() (cp1252), является версией Windows latin1.

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

Пример:

>>> import locale
>>> help(locale.getpreferredencoding)

Выход:

Help on function getpreferredencoding in module locale:

getpreferredencoding(do_setlocale=True)
    Return the charset that the user is likely using,
    according to the system configuration.
(END)
person OShadmon    schedule 28.12.2016
comment
Между sys.stdout.encoding и sys.getdefaultencoding() нет никакой разницы… в этом конкретном случае да, это правда; но я думаю, что также стоит отметить, что это не неизменная истина, которая всегда верна. Например, если было установлено PYTHONIOENCODING, то sys.stdout.encoding отразит это, а sys.getdefaultencoding() — нет. - person Mark G.; 26.12.2020