Имеет ли ANSI какие-либо преимущества по сравнению с более богатыми системами кодирования (например, UTF-8) для кодирования файлов исходного кода?

Вопрос: ANSI кажется ограниченным по сравнению с UTF-8, но это кодировка файла по умолчанию в Notepad++, поэтому мне было интересно. Лучший ответ: Ну, если вы можете кодировать все в ANSI (любой ANSI на вашем компьютере означает, это ужасно двусмысленный термин), то он может быть короче в UTF-8. Для символов, отличных от ASCII, кодировки ANSI могут

Вопрос:

ANSI кажется ограниченным по сравнению с UTF-8, но это кодировка файла по умолчанию в Notepad++, поэтому мне было интересно.

Лучший ответ:

Ну, если вы можете кодировать все в ANSI (любой ANSI на вашем компьютере означает, это ужасно двусмысленный термин), то он может быть короче в UTF-8. Для символов, отличных от ASCII, кодировки ANSI могут по-прежнему кодировать каждый символ в одном байте, тогда как в UTF-8 они будут занимать больше байтов.

Это крошечное преимущество, хотя и недостатки – значительная ИМО – я бы определенно пошел с UTF-8.

Ответ №1

Строго говоря, “выгода” может заключаться в том, что использование байтов может быть меньше, поскольку в UTF-8 имеется много символов, которые закодированы в одном байте ANSI и два-три. Например, florin, mdash, ndash, символ времени и некоторые акцентированные римские буквы.

В Windows API есть собственные операции, которые могут быть быстрее.

Вы много отказываетесь, ограничивая себя 256 символами, в отличие от UTF-8 миллиона плюс.

Ответ №2

Выйдя на Jon, ответьте:

Требования к пространству для кодирования UTF-8, как извлеченная статья Википедии UTF-8 и отформатированная/комбинированная:

  1. Таким образом, первые 128 (диапазон [0, 0x7f]) символов (US-ASCII) нуждаются в одном байте.
  2. Следующие 1,920 (диапазон [0x80,0x07ff]) символов должны [0x80,0x07ff] два байта для кодирования….
  3. Три байта необходимы для остальных (диапазон [0x0800,0xffff]) базовой многоязычной плоскости (которая содержит практически все используемые символы).
  4. Для символов других плоскостей Unicode необходимы четыре байта, которые включают менее распространенные символы CJK и различные исторические сценарии.

Если посмотреть на сопоставление ANSI и Unicode, можно увидеть, что половина символов ANSI (набор ASCII) выравнивается с кодировкой Unicode (1 байт), число значений свыше 127 также попадает в диапазон Unicode [0,0x7FF] (2 байты), и есть менее распространенные значения, которые отображаются в Unicode при превышении 0x07ff (для кодирования в UTF-8 требуется 3 байта).

Теперь о том, почему это кодировка по умолчанию – поговорите с автором Notepad++:

Счастливое кодирование.

Оцените статью
Добавить комментарий