ASCII (Американский стандартный код обмена информацией).

Представление текста с помощью чисел. Первоначально он был разработан для телетайпов, по сути, для обычного текста без форматирования. ASCII - это 7-битный набор символов, содержащий 128 символов. Он включает заглавные и строчные буквы A – Z, числа и специальные символы (разрыв строки, возврат каретки, escape и т. Д.).

N.B. Разрывы строк

CR и LF - управляющие символы ASCII. CR - это байт-код для возврата каретки (со времен пишущих машинок) и LF аналогично для перевода строки.

Разные ОС используют разный байт-код для разрывов строк (Windows использует окончания строк CR LF, а Unix просто использует LF). Это может вызвать проблемы при сохранении документов на разных платформах.

UNICODE

UniCode - это гораздо больший набор символов. Он отображает любой текст на любом языке (https://unicode-table.com/en/#control-character). Первые 128 символов Unicode взаимно однозначно соответствуют ASCII.

Unicode 10.0, содержит набор из 136 755 символов, охватывающий 139 современных и исторических сценариев, а также несколько наборов символов и эмодзи.
https: //en.wikipedia .org / wiki / Юникод

UTF (формат преобразования Unicode)

UTF - это кодировка символов, которая кодирует символы, определенные Unicode.

Эффективность хранения: UTF-8 и эффективность обработки: UTF-32

Кодировка UTF-8

Большинство современных Unix-подобных систем и веб-страниц делают UTF-8 кодировкой символов по умолчанию. Кодирование имеет переменную длину и 8-битные единицы (например, 8, 16, 24 или 32 бит для кодирования символа Unicode.

Кодовые точки больше 127 представлены многобайтовыми последовательностями. Старшие биты любого UTF-8 определяют, сколько байтов содержит двоичный UTF-8. Старший байт имеет две или более старших единицы, за которыми следует 0, в то время как все байты продолжения имеют «10» в старшей позиции. Таким образом, байты, представляющие символы ASCII, не появляются в многобайтовых последовательностях.

0xxxxxxx 0x00..0x7F Только байт 1-байтовой кодировки символов
10xxxxxx 0x80..0xBF Байты продолжения (1-3 байта продолжения)
110xxxxx 0xC0..0xDF Первый байт 2-байтовой кодировки символов
1110xxxx 0xE0..0xEF Первый байт 3-байтовой кодировки символов
11110xxx 0xF0..0xF4 Первый байт 4-байтовой кодировки символов

UTF-16, UTF-32

UTF-16 требует для кодирования символа 16 или 32 бита. UTF-32 всегда требует 32 бита для кодирования символа.

Кодировка UTF-32 используется для кодирования (сериализации) символов Unicode в поток байтов. Таким образом, если байты потеряны, каждый байт идентифицирует поток блока и его BOM (метку порядка байтов).

Хранилище базы данных

Varchar (1 байт на символ) хранит данные ASCII и должен быть вашим типом данных для обычного использования.

Nvarchar (2 байта на символ) хранит данные UNICODE. Если у вас есть требования к хранению UNICODE или многоязычных данных, лучшим выбором будет nvarchar.