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.