Подтвердить что ты не робот

Какая разница между UTF8/UTF16 и Base64 с точки зрения кодирования

В. С#

Мы можем использовать классы ниже для кодирования:

  • System.Text.Encoding.UTF8
  • System.Text.Encoding.UTF16
  • System.Text.Encoding.ASCII

Почему нет System.Text.Encoding.Base64?

Мы можем использовать только метод Convert.From(To)Base64String, какой особенностью является base64?

Можно ли сказать, что base64 - это тот же метод кодирования, что и UTF-8? Или UTF-8 является одним из base64?

4b9b3361

Ответ 1

UTF-8 и UTF-16 - это методы кодирования последовательностей Unicode в байтовые последовательности.

Смотрите: Абсолютный минимум Каждый разработчик программного обеспечения Абсолютно, положительно должен знать о Unicode и наборах символов (без отговорок!)

Base64 - это метод кодирования последовательности байтов в строку.

Итак, это самые разные понятия и их не следует путать.

Что нужно помнить:

  • Не каждая последовательность байтов представляет строку Юникода, закодированную в UTF-8 или UTF-16.

  • Не каждая строка Юникода представляет последовательность байтов, закодированную в Base64.

Ответ 2

Base64 - это способ кодирования двоичных данных, в то время как UTF8 и UTF16 - это способы кодирования текста Unicode. Обратите внимание, что на языке Python 2.x, где двоичные данные и строки смешаны, вы можете кодировать строки в base64 или utf8 одинаково:

u'abc'.encode('utf16')
u'abc'.encode('base64')

Но на языках, где существует более четкое разделение между двумя типами данных, два способа представления данных обычно имеют совершенно разные утилиты, чтобы сохранить проблемы отдельно.

Ответ 3

UTF-8 похож на другой кодировки UTF кодировку символов для кодирования символов Набор символов Unicode UCS.

Base64 - это кодировка для представления любой последовательности байтов с помощью последовательности печатаемых символов (т.е. A - Z, A - Z, 0 - 9, + и /).

Нет System.Text.Encoding.Base64, потому что Base64 не a text encoding, а скорее базовое преобразование, такое как hexadecimal, который использует цифры 0 - 9 и A - F (или A - F) для представления чисел.

Ответ 4

Если не использовать Base64?

Как @Scott Chamberlain ответ в Как применить дополнение для Base64

Base64 - это способ представления двоичных значений в виде текста, чтобы вы не противоречили общим управляющим кодам типа \x0A для новой строки или \0 для ограничителя строк. Это НЕ для преобразования напечатанного текста в двоичный файл.

Ответ 5

Проще говоря, кодирование, например UTF8 или UTF16, полезно для сопоставления чисел, то есть байтов с символами, и наоборот, например, в ASCII 65 сопоставляется с "A", в то время как базовое кодирование переводит байты в байты так, чтобы результирующее байты, преобразованные из одного байта, пригодны для печати и являются подмножеством кодировки ASCII-символов, поэтому Base64 также можно рассматривать как механизм кодирования байтов в текст. Тем не менее, теперь должно быть ясно, что вы можете иметь поток, закодированный в Base64, который представляет поток, закодированный в UTF8.