| **Encodage** | **Description** | **Usages courants** | **Avantages** | **Limitations** | | ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | | **Base64** | Encode des données binaires en texte ASCII en utilisant 64 caractères (A-Z, a-z, 0-9, +, /). Un caractère de remplissage "=" est utilisé pour s'assurer que les données sont divisibles par 4. | - Pièces jointes email (MIME). <br>- Transmission de données binaires dans des URL ou des JSON. | - Compatible avec des systèmes qui gèrent uniquement des chaînes de caractères. | - Encombrement : Augmente la taille des données de 33%. | | **URL Encoding** | Encode les caractères spéciaux dans une URL en utilisant le symbole `%` suivi du code hexadécimal correspondant (ex: espace → `%20`). | - Utilisé pour encoder les caractères non autorisés dans une URL (par ex. `?`, `&`, `=`). | - Permet de transférer des données en toute sécurité dans une URL sans altérer leur signification. | - Peut rendre une URL beaucoup plus longue et illisible. | | **Hexadecimal** | Représente des données binaires sous forme de chiffres hexadécimaux (0-9, A-F). Chaque octet est représenté par deux caractères hexadécimaux. | - Protocoles réseau (ex: adresses MAC). <br>- Stockage de données en basse couche. <br>- Représentation en crypto (hashing). | - Représentation concise et universelle des données binaires. | - La conversion directe peut être moins intuitive pour les humains. | | **ASCII** | Système de codage qui représente des caractères en utilisant des valeurs numériques sur 7 bits (128 caractères), couvrant principalement l'alphabet anglais et des caractères de contrôle. | - Communication textuelle simple (ex: fichiers .txt, logs). <br>- Protocole de base dans les systèmes de réseau. | - Léger et rapide, universellement supporté. | - Limité aux caractères anglais, absence de prise en charge des langues non latines et symboles spéciaux. | | **UTF-8** | Codage de caractères multi-octets qui utilise entre 1 et 4 octets pour représenter les caractères Unicode. Il est rétrocompatible avec ASCII. | - Standard pour le web. <br>- Supporte des millions de caractères Unicode, ce qui inclut la majorité des alphabets. | - Très efficace pour coder du texte en langues européennes. | - Moins efficace en termes de taille pour certaines langues où les caractères nécessitent plus d’octets. | | **UTF-16** | Codage de caractères qui utilise soit 2 soit 4 octets pour représenter les caractères Unicode. Plus adapté pour les caractères non-Latins. | - Utilisé principalement en interne dans certains systèmes (ex: Windows). | - Offre un bon compromis entre la prise en charge des caractères complexes et l'efficacité de stockage. | - Consomme plus de mémoire que UTF-8 pour les caractères ASCII standards. | | **UTF-32** | Chaque caractère Unicode est encodé sur 4 octets. Cette approche garantit un accès direct à chaque caractère. | - Utilisé dans des applications nécessitant un accès aléatoire à des caractères. | - Simplicité d'accès, chaque caractère a la même taille. | - Inefficace en termes de stockage : utilise beaucoup plus d'espace que UTF-8 et UTF-16. | | **Binary/Octet Encoding** | Données encodées en représentation binaire ou octale (base 8). Le binaire utilise 0 et 1, tandis que l'octal utilise 0 à 7. | - Utilisé pour les communications à très bas niveau (ex: en développement de matériel ou en stockage direct). | - Offre une représentation directe des données binaires. | - Difficile à lire et manipuler pour des humains, rarement utilisé en dehors de contextes spécialisés. | | **Quoted-Printable** | Encode des caractères qui ne sont pas sécurisés dans un format texte (comme les caractères non-ASCII) en les représentant sous forme de caractères imprimables. | - Courriers électroniques MIME. <br>- Transmission de texte dans des formats qui ne supportent que des caractères imprimables. | - Facilement lisible pour les humains tout en permettant l'encodage de données non-ASCII. | - Peut augmenter considérablement la taille des données à transmettre. | | **Punycode** | Encode des noms de domaine Unicode en ASCII, ce qui est utilisé pour les noms de domaine internationalisés (IDN). | - Domaines internet avec des caractères non-ASCII (ex: chinois, arabe). | - Compatible avec le DNS, qui ne supporte que les caractères ASCII. | - Les noms de domaine encodés peuvent devenir plus longs et complexes. |