Различия в форматах Юникод, UTF, ASCII, ANSI

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

Чем они полезны для программистов?

2 ответа

Спускаясь вниз по вашему списку:

  • " Юникод" не является кодировкой, хотя, к сожалению, во многих документах неточно используется его для обозначения любой кодировки Юникод, используемой конкретной системой по умолчанию. В Windows и Java это часто означает UTF-16; во многих других местах это означает UTF-8. Правильно, Unicode относится к самому абстрактному набору символов, а не к какой-либо конкретной кодировке.
  • UTF-16: 2 байта на "кодовую единицу". Это собственный формат строк в.NET, и обычно в Windows и Java. Значения вне базовой многоязычной плоскости (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.

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

Другие вопросы по тегам