Ответ 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, который содержит больше информации, чем вы когда-либо сможете пробить - возможно, самый полезный бит это диаграммы кода.