在编码方面,UTF8/UTF16和Base64之间有什么区别

Zho*_*min 51 c# base64 encoding utf-8

在.C#

我们可以使用以下类来进行编码:

  • System.Text.Encoding.UTF8
  • System.Text.Encoding.UTF16
  • System.Text.Encoding.ASCII

为什么没有System.Text.Encoding.Base64

我们只能使用Convert.From(To)Base64Stringbase64的特殊方法吗?

我可以说base64与UTF-8的编码方法相同吗?或者UTF-8是base64之一?

dtb*_*dtb 88

UTF-8UTF-16是将Unicode字符串编码为字节序列的方法.

请参阅:绝对最低每个软件开发人员绝对必须知道Unicode和字符集(没有借口!)

Base64是一种将字节序列编码为字符串的方法.

所以,这些是截然不同的概念,不应混淆.

要记住的事情:

  • 并非每个字节序列都表示以UTF-8或UTF-16编码的Unicode字符串.

  • 并非每个Unicode字符串都表示在Base64中编码的字节序列.


Mik*_*iak 19

Base64是一种编码二进制数据的方法,而UTF8和UTF16是编码Unicode文本的方法.请注意,在Python 2.x这样的语言中,二进制数据和字符串是混合的,您可以用相同的方式将字符串编码为base64或utf8:

u'abc'.encode('utf16')
u'abc'.encode('base64')
Run Code Online (Sandbox Code Playgroud)

但是在两种类型数据之间存在更明确分离的语言中,表示数据的两种方式通常具有完全不同的实用程序,以保持关注点分离.

  • +1`Base64是一种编码二进制数据的方法,而UTF8和UTF16是编码Unicode文本的方法.`说完了. (6认同)

Gum*_*mbo 14

UTF-8与其他UTF编码类似,是对Unicode字符集UCS的字符进行编码的字符编码.

BASE64是由可打印字符的序列(即,表示任何字节序列的编码A- Z,a- z,0- 9,+/).

没有System.Text.Encoding.Base64,因为Base64 不是一个text encoding基本转换,比如使用- 和- 或- 来表示数字的十六进制.09AFaf