Кодировка символов
Вопрос
Мой текстовый редактор позволяет мне код в нескольких разных форматах символов ANSI, UTF-8, UTF-8 (NO BOM), UTF-16LE и UTF-16BE.
В чем разница между ними?
Что обычно считается лучшим форматом (я использую Python, если это делает диффунцию)?
Решение
- «АНСИ» - это неправильномер, и обычно относится к некоторой 8-битной кодированию, это значение по умолчанию на текущей платформе (на «западных» установках Windows, которые обычно Windows-1252.). Он поддерживает только небольшой набор символов (максимум 256 различных символов).
- UTF-8. Является ли переменная длина, совместимая ASCII-совместимое кодирование, способное хранить любую и все символы Unicode. Это довольно хороший выбор для западного текста, который должен поддерживать все символы Unicode и очень жизнеспособный выбор в общем случае.
- «UTF-8 (NO BOM)» - это имя Windows дает использование UTF-8 без написания Маркер заказа байта. Отказ Так как спецификация не требуется Для UTF-8 его не следует использовать, и это будет правильный выбор (почти все остальные называют эту версию просто «UTF-8»!).
- UTF-16LE и UTF-16BE Маленький Endian и большой Endian Версии UTF-16. кодировка. Поскольку UTF-8 UTF-16 способен представить любой символ Unicode, однако это не совместим с ASCII.
Вообще говоря UTF-8 - отличный общий выбор и имеет широкую совместимость (просто убедитесь, что не писать спецификации, потому что это то, что ожидает большинства других программных программ).
UTF-16 может занять меньше места, если большинство вашего текста состоит из символов не-ASCII (т. Е. Не использует базовый латинский алфавит).
«ANSI» следует использовать только тогда, когда у вас есть особая необходимость взаимодействия с устаревшим приложением, которое не поддерживает Unicode.
Важной вещью о каком-либо кодировании состоит в том, что они являются метаданными, которые необходимо сообщать в дополнение к данным. Это означает, что вы должен знать Кодирование некоторых байтового потока для правильного интерпретации его текста. Так что вы должны либо Используйте форматы, которые документируют фактическое использование кодирования (XML - главный пример) или Стандартизировать на одном кодировании в данном контексте и использовать только это.
Например, если вы запускаете программный проект, вы можете указать, что весь ваш исходный код находится в данном кодировке (снова: я предлагаю UTF-8) и придерживайтесь этого.
Для файлов Python конкретно, есть Способ указать кодирование ваших исходных файлов.