在。 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之一?
答案 0 :(得分:75)
UTF-8 和 UTF-16 是将Unicode字符串编码为字节序列的方法。
Base64 是一种将字节序列编码为字符串的方法。
因此,这些是截然不同的概念,不应混淆。
要记住的事情:
并非每个字节序列都代表以UTF-8或UTF-16编码的Unicode字符串。
并非每个Unicode字符串都代表Base64中编码的字节序列。
答案 1 :(得分:14)
Base64是一种编码二进制数据的方法,而UTF8和UTF16是编码Unicode文本的方法。请注意,在Python 2.x这样的语言中,二进制数据和字符串是混合的,您可以用相同的方式将字符串编码为base64或utf8:
u'abc'.encode('utf16')
u'abc'.encode('base64')
但是在两种类型数据之间存在更明确分离的语言中,表示数据的两种方式通常具有完全不同的实用程序,以保持关注点分离。
答案 2 :(得分:13)
UTF-8与其他UTF encodings字符编码类似,可编码Unicode character set UCS的字符。
Base64是一种用一系列可打印字符表示任何字节序列的编码(即A
- Z
,a
- z
,{{ 1}} - 0
,9
和+
)。
没有 System.Text.Encoding.Base64 ,因为Base64 不一个/
,而是像hexadecimal这样的基本转换使用text encoding
- 0
和9
- A
(或F
- a
)来表示数字。
答案 3 :(得分:0)
简单来说,像UTF8或UTF16这样的字符可用于匹配数字,即字节与字符匹配,反之亦然,例如ASCII 65中的字符与“ A”匹配,而基本编码则将字节转换为字节,因此从单个字节转换的结果字节是可打印的,并且是ASCII charachter编码的子集,因此,您也可以将Base64视为字节到文本的编码机制。 就是说,现在应该清楚的是,您可以拥有以Base64编码的流,它呈现了以UTF8编码的流。