В чем разница между UTF8 / UTF16 и Base64 с точки зрения кодирования - PullRequest
47 голосов
/ 05 октября 2010

В. с #

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

  • 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?

Ответы [ 3 ]

15 голосов
/ 05 октября 2010

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

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

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

13 голосов
/ 05 октября 2010

UTF-8 аналогичен другим кодировкам UTF кодировке символов для кодирования символов набора символов Unicode UCS .

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

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

...