Файл Unicode в блокноте - программирование

Файл Unicode в блокноте

Что это значит, когда я сохраняю текстовый файл как "Юникод" в блокноте? это Utf-8, Utf-16 или Utf-32? Заранее спасибо.

4b9b3361

Ответ 1

В "Блокноте", как и в программном обеспечении Windows, "Unicode" в качестве имени кодировки означает UTF-16 Little Endian (UTF-16LE). (Сначала я думал, что это не настоящий UTF-16, потому что Notepad ++ распознает его как UCS-2 и показывает содержимое как мусор, но переустанавливая с помощью BabelPad, я пришел к выводу, что Notepad может правильно кодировать даже символы, отличные от BMP.)

Аналогично, "Unicode big endian" означает UTF-16 Big Endian. И "ANSI" означает систему, основанную на устаревшем кодировании, например. 8-битная кодировка Windows-1252 в западных версиях Windows.

Ответ 2

Все эти форматы являются "Unicode". Но обычно редакторы на Mac и Windows обозначают UTF-8 тем, что он совместим с ASCII ниже кода 128 IIRC. UTF-8 может представлять больше кодов, чем 256 (что соответствует одному байту из 8 бит), используя специальный символ, что означает, что следующий байт также принадлежит к одному и тому же символу.

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