Quel est le codage de caractères par défaut?

8

Je ne sais pas moi-même à quel point cette question va en profondeur (par exemple, pour autant que je sache, il pourrait y en avoir plusieurs, selon ma tâche).

En particulier, je m'intéresse aux types de chaînes utilisés pour nommer les fichiers et les dossiers sur le système.

Je suis également intéressé par la façon dont les chaînes sont représentées par défaut pour un script bash ou python.

gabkdlly
la source
C'est une bonne question, surtout si vous avez converti à partir de Windows et contribuez au code source d'un système de contrôle de version. Après le passage à Ubuntu, vous pouvez soudainement rencontrer des caractères spéciaux illisibles, car Windows n'utilise généralement pas UTF-8.
Bananeweizen

Réponses:

3
  • L'encodage des noms de fichiers sur le système de fichiers est utf-8.
  • Bash pense en octets, pas avec des chaînes de connaissances avec codage. Donc pas d'encodage par défaut. L'encodage par défaut de gnome-terminal est utf-8
  • L'encodage par défaut de Python est ascii
Dennis Kaarsemaker
la source
Python 3 (je pense?) Change par défaut en chaînes unicode.
Broam
Le type str () de Python 3 est un objet unicode dans le codage UCS-2 ou UCS-4 en interne. La façon dont les données sont lues ou écrites, par exemple à partir de fichiers et de stdin, doit être déterminée par le développeur de l'application / bibliothèque, utf-8 étant standard (par exemple, print (some_str) imprimera une représentation utf-8).
Dennis Kaarsemaker
Python 3 deviendra unicode comme Ruby 1.9 Python 2 et moins, comme Ruby 1.8 et moins sont basés sur ascii et fonctionnent avec tous les jeux de caractères, mais leur idée sur le nombre de caractères pour les chaînes unicode est erronée. (ce qui n'est généralement pas un problème)
Ralf
3
gnome-terminal n'est pas par défaut utf-8; il utilise simplement ce que votre locale est définie. (Comme je l'ai découvert à la dure récemment.)
frabjous
1
@DennisKaarsemaker Non, Python3 ne laisse pas l'encodage uniquement au développeur et utilise une valeur par défaut UTF-8. Stdin et -out par exemple utilisent l'encodage de l'environnement par défaut!
Robert Siemer
7

L'encodage de caractères par défaut est UTF-8 (Unicode), bien que presque tous les noms de fichiers (probablement tous sur une installation par défaut) soient des caractères ASCII normaux, communs à la plupart des encodages.

Je ne sais pas ce que vous entendez par "combien de chaînes sont représentées par un script bash ou python". Vous pouvez utiliser des caractères Unicode dans les scripts bash sur Ubuntu, mais généralement avec un script bash, vous appelez d'autres programmes, et si ces autres programmes les géreront, c'est une autre affaire. Il est certainement possible de le faire aussi avec Python, bien que vous souhaitiez vous familiariser avec les packages et les paramètres qui s'y rapportent.

frabjous
la source