web-dev-qa-db-fra.com

Gedit peut-il créer un fichier Unicode?

Utilisation de bless Je peux voir que ma sortie gedit est au format ASCII. Est-ce que gedit peut traiter une sorte d’Unicode?

5
H2ONaCl

Donc, j'ai donné à Bruni une capture d'écran pour leur réponse montrer ce qu'ils voulaient dire. Mais ensuite j'ai testé le résultat. Vous pouvez en effet sélectionner le codage UTF-8 dans gedit, ou n’importe quel autre éditeur de texte. Toutefois, à moins que ces fichiers ne contiennent des caractères non-ASCII **, ils seront détectés en tant qu'ASCII. En fait, il en va de même si vous créez un fichier "texte brut" (terme suspect *) par n'importe quelle méthode, et cette réponse a la raison:

Lorsque tous vos caractères sont <128 ASCII et UTF-8 sont identiques. ASCII est un sous-ensemble de UTF-8 (et également un sous-ensemble de latin1 et de nombreux autres formats de codage).

Je défie quiconque de tester cette réponse; Je ne peux créer un fichier texte "UTF-8" sur mon système qu'en y ajoutant des caractères non-ASCII, même si tous mes terminaux, tous mes éditeurs de texte et mes locale sont définis sur UTF-8:

$ echo unicorns > rainbows; file rainbows
rainbows: ASCII text

rediriger echo crée un fichier qui file dit est ASCII (essayez-le vous-même!)

$ echo ユニコーン >> rainbows; file rainbows
rainbows: UTF-8 Unicode text

L’ajout de caractères non-ASCII modifie automatiquement le codage? Non, force simplement file à voir qu'en réalité, le codage est UTF-8, car il ne peut plus être limité à ASCII.

TL; DR

Ne vous inquiétez pas, vos fichiers texte "ASCII" sont des fichiers UTF-8 déguisés (leur UTF-8-ness ne peut pas être détectée) et seront analysés comme vous le souhaitez.


* Vous étiez assez intéressé pour demander, alors peut-être avez-vous déjà compris ce que l'auteur de cet article nous dit. Cette partie explique plus en détail l'encodage et plus précisément pourquoi ASCII!=UTF-8 et pourquoi vous avez besoin de savoir comment vous avez encodé votre texte. J'ai extrait:

Le fait le plus important concernant les encodages

Si vous oubliez complètement tout ce que je viens d’expliquer, rappelez-vous un fait extrêmement important. Il n’a pas de sens d’avoir une chaîne sans savoir quel encodage elle utilise. Vous ne pouvez plus vous mettre la tête dans le sable et prétendre que le texte "ordinaire" est au format ASCII.

Il n’existe pas de texte clair.

Si vous avez une chaîne, en mémoire, dans un fichier ou dans un courrier électronique, vous devez savoir dans quel encodage il se trouve ou vous ne pouvez pas l'interpréter ni l'afficher correctement aux utilisateurs.

Presque chaque stupide "mon site Web ressemble à du charabia" ou le problème "elle ne peut pas lire mes emails quand j'utilise des accents" revient à un programmeur naïf qui n'a pas compris le simple fait que si vous ne me dites pas si un La chaîne est codée à l'aide de UTF-8 ou ASCII ou ISO 8859-1 (Latin 1) ou Windows 1252 (Europe occidentale), vous ne pouvez simplement pas l'afficher correctement ni même déterminer où elle se termine. Il y a plus d'une centaine d'encodages et au-dessus du point de code 127, tous les paris sont désactivés.


** Fait amusant : @ByteCommander m'a fait remarquer que file ne regarde que les premiers 50 à 100 Ko du fichier, donc si sont des caractères non-ASCII éloignés du début d'un fichier texte, alors file pensera toujours qu'il s'agit d'ASCII.

7
Zanna

Lorsque vous cliquez sur Enregistrer sous, dans le coin inférieur gauche, vous aurez le choix entre plusieurs codages, choisissez ajouter et supprimer (la dernière entrée) et vous obtiendrez une liste de codages disponibles, y compris divers codages Unicode.

enter image description here

7
Bruni