- «Ansi» является неправильным и обычно относится к некоторой 8-битной кодировке, которая используется по умолчанию на текущей платформе (в «западных» установках Windows, которые обычно Windows-1252 ). Он поддерживает только небольшой набор символов (не более 256 различных символов).
- UTF-8 - ASCII-совместимая кодировка переменной длины, способная хранить любые символы Юникода. Это довольно хороший выбор для западного текста, который должен поддерживать все символы Юникода, и очень жизнеспособный выбор в общем случае.
- «UTF-8 (без спецификации)» - это имя, которое Windows дает использованию UTF-8 без записи Byte Order Marker . Поскольку спецификация не требуется для UTF-8, ее не следует использовать, и это будет правильным выбором (почти все остальные называют эту версию просто «UTF-8»!).
- UTF-16LE и UTF-16BE - это версии Little Endian и Big Endian кодировки UTF-16 . Как и UTF-8, UTF-16 способен представлять любой символ Unicode, однако он не совместим с ASCII.
Вообще говоря, UTF-8 является отличным выбором и обладает широкой совместимостью (просто не пишите спецификацию, потому что это то, что ожидает большинство других программ).
UTF-16 может занимать меньше места, если большая часть вашего текста состоит из символов, отличных от ASCII (т.е. не использует основной латинский алфавит).
«Ansi» следует использовать только в том случае, если у вас есть особая потребность взаимодействовать с устаревшим приложением, которое не поддерживает Unicode.
Важной особенностью любой кодировки является то, что они представляют собой метаданные, которые необходимо передавать в дополнение к данным. Это означает, что вы должны знать кодировку некоторого потока байтов, чтобы правильно интерпретировать его как текст. Поэтому вы должны или использовать форматы, которые документируют фактическую используемую кодировку (здесь XML является ярким примером) или стандартизировать одну кодировку в данном контексте и использовать только эту.
Например, если вы запускаете программный проект, вы можете указать, что весь ваш исходный код находится в заданной кодировке (снова: я предлагаю UTF-8), и придерживаться этого.
Специально для файлов Python есть способ указать кодировку ваших исходных файлов .