Различия форматов Unicode, UTF, ASCII, ANSI
-
22-08-2019 - |
Вопрос
В чем разница между Unicode
, UTF8
, UTF7
, UTF16
, UTF32
, ASCII
, и ANSI
кодировки?
Чем это полезно для программистов?
Решение
Идем вниз по вашему списку:
- "Юникод" не является кодировкой, хотя, к сожалению, во многих документах он неточно используется для обозначения кодировки Unicode, используемой по умолчанию в конкретной системе.В 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 байтов на кодовую точку.Это не очень эффективно, но облегчает жизнь за пределами БМП.У меня есть .NET
Utf32String
урок как часть моего РазноеUtil библиотеку, если она вам когда-нибудь понадобится.(Заметьте, это не было тщательно проверено.) - ASCII:Однобайтовое кодирование с использованием только младших 7 бит.(Кодовые точки Unicode 0–127.) Без акцентов и т. д.
- АНСИ:Не существует единой фиксированной кодировки ANSI — их много.Обычно, когда люди говорят «ANSI», они имеют в виду «локаль/кодовую страницу по умолчанию для моей системы», которую можно получить через Кодировка.По умолчанию, и часто Windows-1252 но могут быть и другие регионы.
Есть еще кое-что моя страница в Юникоде и советы по устранению проблем с Unicode.
Другой большой ресурс кода — unicode.org который содержит больше информации, чем вы когда-либо сможете проработать. Возможно, наиболее полезным является кодовые таблицы.
Другие советы
Некоторое чтение, которое поможет вам начать работу с кодировками символов: Джоэл о программном обеспечении:Абсолютный минимум, который каждый разработчик программного обеспечения обязательно должен знать о Юникоде и наборах символов (без оправданий!)
Кстати — ASP.NET тут ни при чем.Кодировки универсальны.
Не связан с StackOverflow