web-dev-qa-db-fra.com

Caractères UTF8 dans le terminal Windows 10 bash

J'ai installé le nouveau shell bash sur Windows 10. Je l'utilise avec ZSH. Cependant, aucun des caractères utf8 ne fonctionne, ils apparaissent sous forme de blocs carrés. Comment puis-je activer le codage de caractères utf8 dans le shell par défaut? Est-ce possible?

32
Ortix92

Faites un clic droit 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 d'ouverture se trouve un onglet où vous pouvez changer la police. J'ai changé la police en "Source Code Pro" et en taille 14.

Ça a l'air bien et tous les personnages d'utf-8 fonctionnent.

10
Doctorj

Pour ajouter à la réponse de Doctorj, il y a 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 à la fois

  • Espaces non latins non-CJK (chinois, japonais, coréen) (macédonien, kazakh, bulgare).
  • A un décalage vertical impair sur les caractères latins accentués (á, é).
  • N'a pas affiché au moins un caractère macédonien.

SumSun-ExtB (police raster):

  • Un message d'avertissement indique que les polices raster risquent de ne pas s'afficher correctement.
  • La plupart des caractères sont affichés en noir (cela peut être dû à un problème de faible luminosité de l'écran).
  • Les caractères non-ASCII sont clairs, comparés aux caractères ASCII (solution possible, utilisez l'option gras).
  • Les caractères de toutes les langues sont rapprochés (il est plus facile de voir l'espacement entre les mots).
  • Semble plus fiable pour les langues non latines et non CJK.

Avec l'une de ces polices, à la fois d'invite de commande et PowerShell, des choses étranges se produisent lorsque vous cliquez sur des caractères non-ASCII, même si cela revient à la normale lorsque vous mettez en surbrillance le texte.

Pour installer une police: Notez que vous devez modifier la police utilisée pour le shell Windows utilisé, telle que l’invite de commande ou PowerShell, et non selon le mode Linux utilisé par bash. Ce lien décrit les polices pouvant ê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

  • Afficher l'éditeur de registre (exécuter "regedit")
  • Recherchez le dossier HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont
  • Clic droit (ou Edition) -> Nouveau -> Valeur de chaîne
  • Nommez la police avec un 0 de plus que le dernier (par exemple, "000").
  • Faites un clic droit 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, consultez la question ci-dessous .

  • J'ai essayé d'installer "Source Code Pro" mais il ne figurait pas dans les polices pour moi.
  • J'ai installé DejaVu Sans Mono et cela fonctionne pour la plupart des langues, mais pas du tout pour CJK.
  • J'ai installé la police monospace Noto de Google, et cela a fonctionné, mais pas pour CJK. En outre, ils disent spécifiquement qu'ils ne disposent pas d'un support monospace pour CJK.
  • J'ai installé 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 CJK.
  • J'ai abandonné et je suis retourné à SimSun-ExtB.

(Remarque: je n'ai pas encore assez de réputation pour publier les liens).

9
Joshua Mathias

Vous pouvez essayer DejaVu Sans Mono - cela fonctionne pour moi.

5
user3599934

C'est vraiment plus un commentaire qu'une réponse, mais comme SE ne me permet pas de commenter ...

Vous n'avez pas fourni suffisamment d'informations. Unicode fournit plus d'un million de caractères possibles, dont plus de 100 000 ont été définis. (Les autres sont destinées aux contacts avec les extraterrestres, ou plus vraisemblablement aux systèmes d'écriture d'Earthlings qui n'ont pas encore été codés.) Celles-ci sont réparties dans environ 150 scripts: latin, cyrillique, arabe, chinois ... Aucune police utilisée fournir des glyphes (images de caractères) pour tous ces caractères. (Il y en a un 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 Grawity l'a dit il y a plus de deux ans, si vous obtenez une zone dans laquelle vous attendez un seul caractère, votre application affiche déjà Unicode (probablement le codage UTF-8 de Unicode). Ce qui vous manque, c'est une police fournissant des glyphes pour tous les scripts que vous souhaitez afficher. Si vous affichez le russe, vous voudriez une police avec des caractères cyrilliques; si vous souhaitez afficher le chinois, vous avez besoin d'une police contenant ces caractères. (La plupart des polices de ce type afficheront également des caractères latins - ceux que nous utilisons pour l'anglais - mais pas nécessairement beaux.)

Ma question est donc la suivante: quel script essayez-vous d’afficher? Jusqu'à ce que nous sachions cela, toutes les réponses seront des conjectures.

En passant, certains scripts sont assez compliqués et seuls certains programmes les affichent correctement, même si vous avez la bonne police. Parmi ceux-ci, on trouve le birman, certains scripts indiens (Devanagari, par exemple) et l'arabe (qui est écrit de droite à gauche et dont les caractères doivent être affichés différemment selon les caractères adjacents).

0
Mike Maxwell