2009-04-09 9 views
4

J'ai une fonction qui peut décoder un tableau d'octets en une chaîne de caractères en utilisant un codage spécifié..NET: Pourquoi la base 64 n'est-elle pas dans Encoding.GetEncodings()?

Exemple:

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 

Si je veux inclure base64 dans ce que je dois faire quelque chose comme ceci:

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 

Pourquoi base64 traité spécial dans .NET?

Répondre

22

Ils sont vraiment pas la même chose:

  • codages sont façons de représenter un texte arbitraire sous forme binaire.
  • Base64 est un moyen de représenter des données binaires arbitraires sous forme de texte.

Vous ne les utiliserez normalement pas dans les mêmes circonstances. Vous utiliseriez un encodage lorsque les données "réelles" sont du texte, et base64 lorsque les données "réelles" sont binaires.

Bien sûr, vous pouvez implémenter un encodage pour faire base64, mais personnellement, je ne pense pas que ce soit une bonne idée.

-1

Il est dans System.Convert

+0

Eh bien, l'OP l'utilise dans la question, donc je ne suis pas sûr que ce soit une énorme révélation ... –

+0

doh! bon point - c'est pourquoi j'ai voté pour la réponse de Skeet;) –

+0

@Marc: "énorme révélation" ... LOLzzz !! –