" Юникод » не является кодировкой, хотя, к сожалению, во многих документах неточно используется его для обозначения любой кодировки Юникод, используемой конкретной системой по умолчанию. В 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. У меня есть Utf32Stringкласс .NET как часть моей библиотеки MiscUtil , если вы когда-нибудь захотите. (Заметьте, это не очень тщательно проверено.)
ASCII : однобайтовое кодирование только с использованием младших 7 бит. (Юникод кодовые точки 0-127.) Нет акцентов и т. Д.
ANSI: нет единой фиксированной кодировки ANSI - их много. Обычно, когда люди говорят «ANSI», они означают «локаль / кодовую страницу по умолчанию для моей системы», полученную с помощью Encoding.Default , и часто это Windows-1252, но могут быть и другие локали.
Другим большим ресурсом кода является unicode.org, который содержит больше информации, чем вы когда-либо сможете пройти - возможно, самый полезный бит - это графики кода .
Термин «ANSI» применительно к 8-битным кодовым страницам Microsoft является неправильным. Они были основаны на проектах, представленных для стандартизации ANSI, но сама ANSI никогда не стандартизировала их. Windows-1252 (кодовая страница, чаще всего называемая «ANSI») аналогична ISO 8859-1 (Latin-1), за исключением того, что Windows-1252 имеет печатаемые символы в диапазоне 0x80..0x9F, где ISO 8859-1 имеет контрольные символы в этом диапазоне. Юникод также имеет управляющие символы в этом диапазоне. ru.wikipedia.org/wiki/Windows_code_page
Кит Томпсон,
1
@ jp2code: я бы не стал - но вам нужно различать «контент, который отправляется обратно через HTTP с веб-сервера» и «контент, который отправляется по электронной почте». Это не содержание веб-страницы, которое отправляет электронное письмо, а приложение за ним, по-видимому. Веб-контент будет лучшим в UTF-8; почтовый контент может быть в UTF-7, хотя я подозреваю, что в наши дни нормально хранить его в UTF-8.
Джон Скит
2
Для UTF-16, IMHO, я бы сказал «2 байта на единицу кода», поскольку кодовая точка вне BMP будет кодироваться в суррогатных парах как 2 единицы кода (4 байта).
Людовик Куты
1
Пропускает различия между UTF-16LE (в .NET) и BE, а также понятие спецификации.
Maarten Bodewes
2
@ Андрей: Нет, нет (общего) маркера кодирования. Windows 1252 не может представлять спецификацию Unicode, и это не имеет смысла, так как в любом случае это всего лишь кодирование по одному байту на символ.
Ответили здесь через 6 лет после написания статьи. Я прочитал это через 8 лет после того, как пост был написан. 14 лет спустя, и это все еще хорошее чтение. Это больше половины моей жизни назад. Невероятный.
Ответы:
Спускаясь вниз по вашему списку:
Utf32String
класс .NET как часть моей библиотеки MiscUtil , если вы когда-нибудь захотите. (Заметьте, это не очень тщательно проверено.)На моей странице Unicode есть еще и советы по устранению неполадок Unicode .
Другим большим ресурсом кода является unicode.org, который содержит больше информации, чем вы когда-либо сможете пройти - возможно, самый полезный бит - это графики кода .
источник
Некоторое чтение, чтобы вы начали работать с кодировкой символов: Джоэл о программном обеспечении: Абсолютный минимум Каждый разработчик программного обеспечения Абсолютно, положительно должен знать о Unicode и наборах символов (никаких оправданий!)
Кстати - ASP.NET тут не причем. Кодировки универсальны.
источник