J'ai installé le nouveau bash Shell sur Windows 10. Je l'utilise avec ZSH. Cependant, aucun des caractères utf8 ne fonctionne, ils apparaissent comme des blocs carrés. Comment puis-je activer l'encodage des caractères utf8 dans le Shell par défaut ? Est-ce possible ?
Réponses
Trop de publicités?Pour compléter la réponse de Doctorj, il existe quelques polices installées par défaut que vous pouvez utiliser (sur Windows 10 bash Shell).
Langues testées : Bulgare, Ukrainien, Chinois simplifié, Chinois traditionnel, Danois, Français, Allemand, Italien, Japonais, Kazakh, Coréen, Macédonien, Mongol, Norvégien, Polonais, Portugais, Russe, Serbe, Espagnol, Suédois.
Les polices par défaut suivantes affichent tous les caractères observés :
- MS Gothic
- NSimSun
- Ne semble pas afficher tout le kazakh.
- SimSun-ExtB (police raster) - Ma recommandation
MS Gothic et NSimSun
- Les langues non latines non CJK (chinois, japonais, coréen) (macédonien, kazakh, bulgare) sont exclues.
- Présente un décalage vertical étrange sur les caractères latins accentués (á,é).
- N'a pas présenté au moins un personnage macédonien.
SumSun-ExtB (police matricielle) :
- Un message d'avertissement indique que les polices tramées risquent de ne pas s'afficher correctement.
- La plupart des caractères sont affichés de manière sombre (cela peut être un problème de faible luminosité de l'écran).
- Les caractères non ASCII sont plus clairs que les caractères ASCII (solution possible : utiliser l'option gras).
- Les caractères de toutes les langues sont proches les uns des autres (l'espacement entre les mots est plus facile à voir).
- Il semble plus fiable pour les langues non latines et non CJK.
Avec n'importe laquelle de ces polices, qu'il s'agisse de l'Invite de commande ou de PowerShell, des choses bizarres se produisent lorsque vous cliquez sur des caractères non ASCII, bien que cela revienne à la normale lorsque vous mettez le texte en surbrillance.
Pour installer une police : Notez que vous devez changer la police pour le Shell Windows que vous utilisez, tel que l'Invite de commande ou PowerShell, et non pour la méthode Linux via bash. Ce lien décrit les polices qui peuvent être utilisées dans l'Invite de commande (polices monospaces, et comment installer et sélectionner une police pour l'Invite de commande) : Ajouter des polices à l'invite de commande
- Ouvrez l'éditeur du registre (exécutez "regedit").
- Trouver le dossier HKEY_LOCAL_MACHINE \SOFTWARE\Microsoft\Windows NT \CurrentVersion\Console\TrueTypeFont
- Clic droit (ou Edit) -> Nouveau -> Valeur de la chaîne de caractères
- Nommez la police avec un 0 de plus que le dernier (par exemple "000").
- Cliquez avec le bouton droit de la souris sur l'entrée et sélectionnez "Modifier...".
- Entrez le nom de la police ou du fichier OTF (sans .otf).
Pour plus d'informations sur l'installation de polices via la ligne de commande sous Windows, voir cette question et ses réponses.
- J'ai essayé d'installer "Source Code Pro" mais il n'est pas apparu dans les polices pour moi.
- J'ai installé DejaVu Sans Mono et il fonctionne pour la plupart des langues mais pas du tout pour le CJK.
- J'ai installé la police Noto monospace de Google, et cela a fonctionné, mais pas pour le CJK. De plus, ils disent spécifiquement qu'ils n'ont pas de support monospace pour le CJK.
- J'ai installé l'Inconsolata de Google, et cela ne valait pas la peine d'essayer.
- J'ai installé GNU FreeFont (FreeMono), et cela a fonctionné, mais pas pour le CJK.
- J'ai abandonné et je suis retourné à SimSun-ExtB.
(Note : je n'ai pas encore assez de réputation pour publier les liens).
Cliquez avec le bouton droit de la souris sur la barre de titre en haut de la fenêtre bash, choisissez les propriétés de l'entrée. Dans la fenêtre qui s'ouvre, il y a un onglet où vous pouvez changer la police. J'ai changé la police en "Source Code Pro" et en taille 14.
Cela semble correct et tous les caractères utf-8 fonctionnent.
Il s'agit plus d'un commentaire que d'une réponse, mais comme SE ne me permet pas de commenter...
Vous n'avez pas fourni suffisamment d'informations. Unicode propose plus d'un million de caractères possibles, dont plus de 100 000 ont été définis. (Les autres sont prévus pour les contacts avec les extraterrestres ou, plus probablement, pour les systèmes d'écriture des Terriens qui n'ont pas encore été codés). Ils sont répartis entre environ 150 scripts : Latin, cyrillique, arabe, chinois... Aucune police ne fournira de glyphes (images de caractères) pour tous ces caractères. (Il y en a une ou deux qui fournissent une boîte avec le point de code à l'intérieur, mais ce n'est pas ce que vous voulez).
Comme l'a dit grawity il y a plus de deux ans, si vous obtenez une boîte là où vous attendez un seul caractère, c'est que votre application affiche déjà l'Unicode (probablement l'encodage UTF-8 de l'Unicode). Ce qui vous manque, c'est une police qui fournit des glyphes pour les scripts que vous voulez afficher. Si vous affichez du russe, vous voudrez une police contenant des caractères cyrilliques ; si vous voulez afficher du chinois, vous aurez besoin d'une police contenant ces caractères. (La plupart de ces polices affichent également les caractères latins (ceux que nous utilisons pour l'anglais), mais pas nécessairement les jolis caractères).
Ma question est donc la suivante : quel script essayez-vous d'afficher ? Tant que nous ne le saurons pas, toutes les réponses seront des suppositions.
BTW, certains scripts sont assez compliqués, et seuls certains programmes les afficheront correctement, même si vous avez la bonne police. Il s'agit notamment du birman, de certains scripts indiens (Devanagari, par exemple) et de l'arabe (qui s'écrit de droite à gauche et dont les caractères doivent être affichés différemment en fonction des caractères adjacents).