Quel est le codage par défaut pour les chaînes C?

Je sais que les chaînes de caractères C sont char [] avec un ‘0’ dans le dernier élément. Mais comment les caractères sont-ils encodés?

Mise à jour: j’ai trouvé ce lien intéressant qui parle de nombreux autres langages de programmation et de leurs conventions d’encodage: Lien

Tout ce que la norme dit en la matière, c’est que vous obtenez au moins les 52 caractères d’alphabet latin en majuscules et minuscules, les chiffres de 0 à 9, les symboles ! " # % & ' ( ) * + , - . / : ; < = > ? [ \ ] ^ _ { | } ~ ! " # % & ' ( ) * + , - . / : ; < = > ? [ \ ] ^ _ { | } ~ , ainsi que le caractère espace et les caractères de contrôle représentant des tabs horizontaux, verticaux et des formulaires.

La seule chose qu’il est dit à propos du codage numérique est que tout ce qui précède tient dans un octet et que la valeur de chaque chiffre après zéro est supérieure à la valeur du précédent.

Le codage réel est probablement hérité de vos parameters régionaux. Probablement quelque chose de compatible ASCII.

Une chaîne c n’est quasiment qu’une séquence d’octets. Cela signifie qu’il n’a pas d’encodage bien défini, c’est-à-dire ASCII, UTF8 ou autre, en fait. Étant donné que la plupart des systèmes d’exploitation comprennent l’ASCII par défaut et que le code source est principalement écrit avec un codage ASCII, les données que vous trouverez dans un simple (char *) seront très souvent également au format ASCII. Néanmoins, rien ne garantit que ce que vous obtenez d’un (caractère *) sera UTF8 ou même KOI8.

La norme ne le spécifie pas. Typiquement avec ASCII.

Comme d’autres l’ont déjà indiqué, C impose certaines ressortingctions sur ce qui est autorisé pour les codages de caractères source et d’exécution, mais est relativement permissif. Donc, en particulier, ce n’est pas nécessairement ASCII, et dans la plupart des cas au moins une extension de cela.

Votre environnement d’exécution est conçu pour une éventuelle conversion entre le jeu de caractères source et d’exécution. Donc, en règle générale, vous ne devez pas vous soucier de l’encodage et au contraire, essayez de coder indépendamment de celui-ci. C’est pourquoi il existe des séquences d’échappement spéciales pour les caractères spéciaux tels que '\n' ou '\t' et des encodages de caractères universels tels que '\u0386' . Donc, en général, vous ne devriez pas avoir à rechercher les encodages pour le jeu de caractères d’exécution vous-même.

Ils ne sont pas vraiment “encodés” en tant que tels, ils sont simplement stockés tels quels. La chaîne “hello” représente un tableau avec les valeurs de caractère 'h' , 'e' , 'l' , 'l' , 'o' et '\0' , dans cet ordre. La norme C a un jeu de caractères de base qui inclut ces caractères, mais ne spécifie pas de codage en octets. Cela pourrait être EBCDIC, à votre connaissance.