在C#中,我们可以使用以下类进行编码:
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的一种?
UTF-8 和 UTF-16 是将 Unicode 字符串编码为字节序列的方法。
参见:Joel on Software 的文章“关于 Unicode 和字符集,每个软件开发人员必须知道的绝对最少知识(无可推辞!)”
Base64 是将字节序列编码为字符串的方法。
因此,这些是非常不同的概念,不应混淆。
需要记住的事情:
并非每个字节序列都表示用 UTF-8 或 UTF-16 编码的 Unicode 字符串。
并非每个 Unicode 字符串都表示用 Base64 编码的字节序列。
Base64是一种编码二进制数据的方式,而UTF8和UTF16是编码Unicode文本的方法。请注意,在像Python 2.x这样的语言中,二进制数据和字符串被混合使用,您可以以相同的方式将字符串编码为base64或utf8:
u'abc'.encode('utf16')
u'abc'.encode('base64')
但在那些数据类型分离更加明确的语言中,两种表示数据的方式通常具有非常不同的效用,以保持关注点分离。
UTF-8是一种字符编码,类似于其他UTF编码,用于编码Unicode字符集USC中的字符。
Base64是一种编码,可以将任何字节序列表示为可打印字符序列(即A
-Z
、a
-z
、0
-9
、+
和/
)。
没有System.Text.Encoding.Base64,因为Base64不是文本编码,而是像十六进制一样的基数转换,使用0
-9
和A
-F
(或a
-f
)来表示数字。