Unicode, UTF, ASCII, различия формата ANSI

В чем разница между кодировками Unicode, UTF8, UTF7, UTF16, UTF32, ASCII и ANSI?

Каким образом они могут помочь программистам?

Ответы

Ответ 1

Переходя вниз по списку:

  • "Unicode" не является кодировкой, хотя, к сожалению, во многих документах неточно указывается, какая из кодировок Unicode используется данной системой по умолчанию. В Windows и Java это часто означает UTF-16; во многих других местах это означает UTF-8. Правильно, Unicode относится к самому абстрактному набору символов, а не к какой-либо конкретной кодировке.
  • UTF-16: 2 байта на "кодовую единицу". Это собственный формат строк в .NET, и обычно в Windows и Java. Значения вне базовой многоязычной плоскости (BMP) кодируются как суррогатные пары. Раньше они использовались относительно редко, но теперь многие потребительские приложения должны будут знать о не-BMP персонажах, чтобы поддерживать эмодзи.
  • UTF-8: кодирование переменной длины, 1-4 байта на кодовую точку. Значения ASCII кодируются как ASCII, используя 1 байт.
  • UTF-7: обычно используется для кодировки почты. Скорее всего, если вы думаете, что вам это нужно, и вы не делаете почту, вы ошибаетесь. (Это просто мой опыт размещения людей в новостных группах и т.д. - за пределами почты, он на самом деле не очень широко используется.)
  • UTF-32: исправлено кодирование ширины с использованием 4 байтов на кодовую точку. Это не очень эффективно, но облегчает жизнь вне BMP. У меня есть класс .NET Utf32String как часть моей библиотеки MiscUtil, если вы когда-нибудь захотите. (Заметьте, это не было очень тщательно проверено.)
  • ASCII: однобайтовая кодировка только с использованием младших 7 бит. (Юникод кодовые точки 0-127.) Без акцентов и т.д.
  • ANSI: Там нет единой фиксированной кодировки ANSI - их много. Обычно, когда люди говорят "ANSI", они имеют в виду "локаль/кодовую страницу по умолчанию для моей системы", которая получается через Encoding.Default и часто является Windows-1252, но могут быть и другими локалями.

Дополнительные сведения о моей странице Unicode и советы по устранению неполадок Unicode.

Другой большой ресурс кода - unicode.org, который содержит больше информации, чем вы когда-либо сможете пробить - возможно, самый полезный бит это диаграммы кода.

Ответ 2

Некоторые чтения, чтобы начать с кодировки символов: Joel on Software: Абсолютный минимум Каждый разработчик программного обеспечения абсолютно уверен, должен знать об Unicode и наборах символов (без отговорок!)

Кстати, ASP.NET не имеет к этому никакого отношения. Кодировки универсальны.