.NET:为什么在Encoding.GetEncodings()中不是base 64?

Rob*_*ers 4 .net base64 encoding character-encoding

我有一个函数,可以使用指定的编码将字节数组解码为字符串.

例:

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
Run Code Online (Sandbox Code Playgroud)

如果我想在其中包含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
Run Code Online (Sandbox Code Playgroud)

为什么base64在.NET中处理特殊?

Jon*_*eet 22

他们真的不是一回事:

  • 编码是以二进制形式表示任意文本的方式.
  • Base64是一种以文本形式表示任意二进制数据的方法.

你通常不会在相同的情况下使用它们.当"真实"数据是文本时使用编码,而当"真实"数据是二进制时使用base64.

当然你可以实现一个编码来做base64,但我个人认为这不是一个好主意.