.NET: Почему не Base 64 в Encoding.GetEncodings ()? - PullRequest
4 голосов
/ 10 апреля 2009

У меня есть функция, которая может декодировать массив байтов в строку символов, используя указанную кодировку.

Пример:

Function Decode(ByVal bytes() As Byte, ByVal codePage As String) As String
    Dim enc As Text.Encoding = Text.Encoding.GetEncoding(codePage)
    Return enc.GetString(bytes)
End Function

Если я хочу включить base64 в это, я должен сделать что-то вроде этого:

Function Decode(ByVal bytes() As Byte, ByVal codePage As String) As String
    If String.Compare(codePage, "base64", True) = 0 Then
        Return Convert.ToBase64String(bytes)
    Else
        Dim enc As Text.Encoding = Text.Encoding.GetEncoding(codePage)
        Return enc.GetString(bytes)
    End If
End Function

Почему base64 обрабатывается специально в .NET?

Ответы [ 2 ]

22 голосов
/ 10 апреля 2009

Они на самом деле не одно и то же:

  • Кодировки - это способы представления произвольного текста в двоичной форме.
  • Base64 - это способ представления произвольных двоичных данных в текстовом виде.

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

Конечно, вы можете реализовать кодировку для base64, но лично я не думаю, что это хорошая идея.

0 голосов
/ 10 апреля 2009

Это в System.Convert

...