web-dev-qa-db-fra.com

Quelle est la différence entre UTF8 / UTF16 et Base64 en termes d'encodage

Dans. c #

Nous pouvons utiliser les classes ci-dessous pour effectuer l'encodage:

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

Pourquoi n'y a-t-il pas de System.Text.Encoding.Base64?

Nous ne pouvons utiliser que la méthode Convert.From(To)Base64String, quelle est la particularité de base64?

Puis-je dire que base64 est la même méthode de codage que UTF-8? Ou UTF-8 est l'un des base64?

49
Zhongmin

UTF-8 et UTF-16 sont des méthodes pour coder les chaînes Unicode en séquences d'octets.

Voir: Le minimum absolu que tous les développeurs de logiciels doivent absolument, positivement, connaître à propos de l'Unicode et des jeux de caractères (pas d'excuses!)

Base64 est une méthode pour coder une séquence d'octets en une chaîne.

Ce sont donc des concepts très différents et ne doivent pas être confondus.

À retenir:

  • Toutes les séquences d'octets ne représentent pas une chaîne Unicode codée en UTF-8 ou UTF-16.

  • Toutes les chaînes Unicode ne représentent pas une séquence d'octets codée en Base64.

83
dtb

Base64 est un moyen de coder les données binaires, tandis que UTF8 et UTF16 sont des moyens de coder le texte Unicode. Notez que dans un langage comme Python 2.x, où les données binaires et les chaînes sont mélangées, vous pouvez coder les chaînes en base64 ou utf8 de la même manière:

u'abc'.encode('utf16')
u'abc'.encode('base64')

Mais dans les langues où il y a une séparation plus bien définie entre les deux types de données, les deux façons de représenter les données ont généralement des utilitaires assez différents, pour garder les préoccupations séparées.

17
Mike Axiak

UTF-8 est comme les autres encodages UTF un encodage de caractères pour encoder les caractères du jeu de caractères Unicode UCS .

Base64 est un encodage pour représenter toute séquence d'octets par une séquence de caractères imprimables (c'est-à-dire AZ, az, 09, +, et /).

Il n'y a pas System.Text.Encoding.Base64 car Base64 n'est pas un text encoding mais plutôt une conversion de base comme le hexadécimal qui utilise 09 et AF (ou af) pour représenter les nombres.

14
Gumbo

En termes simples, un caractère entrant, comme UTF8 ou UTF16, est utile pour faire correspondre les nombres, c'est-à-dire les octets aux caractères et vice versa, par exemple en ASCII 65 correspond à "A", tandis qu'une base Le codage est principalement utilisé pour convertir les octets en octets afin que les octets résultants convertis à partir d'un seul octet soient imprimables et constituent un sous-ensemble du codage de caractère ASCII), pour cette raison, vous pouvez également voir Base64 comme un octets au mécanisme de codage de texte. La principale raison d'utiliser Base64 est de transmettre des données sur un canal qui ne permet pas le transfert de données binaires. Cela dit, il devrait maintenant être clair que vous pouvez avoir un flux codé en Base64 qui représente un flux Codé UTF8.

0
S.Bozzoni