Когда я пытаюсь сохранить текстовый файл с неанглийским текстом в Блокноте, у меня появляется возможность выбора между Unicode , Unicode Big Endian и UTF-8 . В чем разница между этими форматами?
Предполагая, что я не хочу обратной совместимости (со старыми версиями ОС или приложениями), и меня не волнует размер файла, какой из этих форматов лучше?
(Предположим, что текст может быть на таких языках, как китайский или японский, в дополнение к другим языкам.)
Примечание. Из ответов и комментариев ниже видно, что в языке Блокнот Unicode - это UTF-16 (Little Endian), Unicode - это Big UTF-16 (Big Endian), а UTF-8 - это UTF-8.
Ответы:
Не знаю. Что лучше: пила или молоток? :-)
Юникод не UTF
В этой статье есть немного больше, что касается темы:
UTF-32 фокусируется на исчерпывающем представлении и представлении фиксированной длины, используя 4 байта для всех символов. Это самый простой перевод, отображающий непосредственно кодовую точку Unicode в 4 байта. Очевидно, это не очень эффективно по размеру.
UTF-16 - это компромисс, использующий 2 байта большую часть времени, но расширяющийся до 2 * 2 байтов на символ для представления определенных символов, которые не включены в базовую многоязычную плоскость (BMP).
Также см. «Абсолютный минимум», который должен знать каждый разработчик программного обеспечения. Абсолютно, положительно должен знать о Unicode и наборах символов (никаких оправданий!)
источник
Для европейских языков UTF-8 меньше. Для восточных языков разница не столь очевидна.
Оба будут обрабатывать все возможные символы Unicode, поэтому не должно иметь значения в совместимости.
источник
Существует больше кодировок Unicode, чем вы думаете.
UTF 8
Кодировка UTF-8 имеет переменную ширину в диапазоне от 1 до 4 байтов, причем верхние биты каждого байта зарезервированы в качестве управляющих битов. Начальные биты первого байта указывают общее количество байтов, используемых для этого символа. Скалярное значение кодовой точки символа представляет собой конкатенацию неуправляемых битов. В этой таблице
x
представляет младшие 8 битов значения Unicode,y
представляет следующие старшие 8 битов иz
представляет биты выше этого.источник
«Юникод» - это еще один термин для «UTF-16», который представляет собой кодировку набора символов Юникода в шестнадцати битах на символ. UTF-8 кодирует его в восемь битов на символ.
В обоих случаях любое переполнение выделяется другим 16 или восьми битам.
источник
Единственным реальным преимуществом небольших файлов, таких как текстовые файлы, является размер получаемого файла. UTF-8 обычно создает файлы меньшего размера. Но эта разница может быть менее выраженной с китайским / японским текстом.
источник
Одним словом, Unicode - это набор символов , в то время как Unicode Big Endian и utf-8 - это две кодировки , которые используются для хранения символов как 01 на компьютере.
источник