Различия в форматах Юникод, 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/, который содержит больше информации, чем вы когда-либо сможете пройти - возможно, самый полезный бит - это графики кода.
Некоторое прочтение, чтобы начать знакомство с кодировкой символов: Джоэл о программном обеспечении: Абсолютный минимум Каждый разработчик программного обеспечения Абсолютно, положительно должен знать о Юникоде и наборах символов (никаких оправданий!)
Кстати - ASP.NET тут не причем. Кодировки универсальны.