Caractères UTF8 dans le terminal bash de Windows 10

36

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 activer l'encodage de caractères utf8 dans le shell par défaut? Est-ce possible?

Ortix92
la source
5
Si chaque caractère apparaît comme un bloc carré, alors UTF-8 fonctionne déjà; c'est la police qui ne prend pas en charge Unicode.
grawity
utiliser chcp 65001pour changer la page de code en UTF-8 et changer la police en Consolas
phuclv
Je suis passé à la SimSun-Ext Bpolice et tous les caractères s'affichent correctement.
Ryan Foley
5
@grawity J'utilisais uubntu mono et je suis maintenant passé aux consoles. Au lieu d'une boîte carrée vide, j'obtiens une boîte carrée avec un point d'interrogation à l'intérieur. J'ai également essayé la suggestion chcp mais elle est déjà définie sur l'encodage UTF-8 lorsque j'ai vérifié les propriétés.
Ortix92
2
Je voudrais souligner que ce problème n'est toujours pas résolu et que je ne peux toujours pas afficher correctement les caractères utf8 unicode en utilisant ZSH
Ortix92

Réponses:

12

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 la taille 14.

Semble bon et tous les caractères utf-8 fonctionnent.

Doctorj
la source
Voilà la vraie réponse. Vous pouvez choisir la police de votre choix qui prend en charge UTF8. J'ai installé Menlo, puis j'ai oublié de le changer dans les options bash, honnêtement, je n'y ai même pas pensé.
StalkAlex
Veuillez noter que j'ai essayé toutes les options par défaut dans Windows (y compris Source Code Pro) et le caractère de coche (✔) ne fonctionnait pour moi qu'avec la police "DejaVu Sans Mono" suggérée par @ user3599934!
Sevron
10

Pour ajouter à la réponse de Doctorj, il existe quelques polices installées par défaut que vous pouvez utiliser (sur le shell bash de Windows 10).

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

  • Espace les langues non latines 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 peuvent ne pas s'afficher correctement.
  • La plupart des caractères sont affichés sombres (cela pourrait être un problème avec une faible luminosité de l'écran).
  • Les caractères non ASCII sont brillants, par rapport aux caractères ASCII (solution possible, utilisez l'option en gras).
  • Les caractères de toutes les langues se rapprochent (plus facile à voir l'espacement entre les mots).
  • Semble plus fiable pour les langues non latines et non CJC.

Avec l'une de ces polices, à la fois l'invite de commandes et PowerShell, des choses étranges 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, comme l'invite de commandes ou PowerShell, et non la manière Linux via bash. Ce lien décrit les polices pouvant être utilisées sur l'invite de commandes (polices monospace, et comment installer et sélectionner une police pour l'invite de commandes): Ajouter des polices à l'invite de commandes

  • Ouvrez l'Éditeur du Registre (exécutez "regedit")
  • Recherchez le dossier HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Console \ TrueTypeFont
  • Clic droit (ou Modifier) ​​-> Nouveau -> Valeur de chaîne
  • Nommez la police avec un 0 de plus que le dernier (comme "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 des polices via la ligne de commande sous Windows, consultez cette question et réponses.

  • J'ai essayé d'installer "Source Code Pro" mais il n'apparaissait pas dans les polices pour moi.
  • J'ai installé DejaVu Sans Mono et cela fonctionne pour la plupart des langues mais ne fonctionne pas du tout pour CJK.
  • J'ai installé la police monospace Noto de Google, et cela a fonctionné, mais pas pour CJK. De plus, ils disent spécifiquement qu'ils n'ont pas de support monospace pour CJK.
  • J'ai installé Inconsolata de Google, et cela ne valait pas la peine d'être essayé.
  • 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).

Joshua Mathias
la source
6

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

user3599934
la source
11
Bien que cela puisse être la solution au problème du PO, c'est plus un indice qu'une réponse de haute qualité. Il peut être amélioré en donnant des instructions sur: 1) comment changer la police du terminal Windows 10 Bash; 2) comment installer ladite police (sauf si elle se trouve dans chaque Windows 10 par défaut - je suis sous Linux, je ne sais pas).
Kamil Maciorowski
1
J'ai utilisé Ubuntu Mono auparavant et j'ai eu le problème avec. DejaVu Sans Mono a résolu le problème.
smonff
0

C'est vraiment plus un commentaire qu'une réponse, mais puisque 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 pour quand nous contactons des extraterrestres, ou plus probablement pour les systèmes d'écriture d'Earthlings qui n'ont pas encore été encodés.) Ceux-ci sont répartis sur environ 150 scripts: latin, cyrillique, arabe, chinois ... Aucune police ne va pour fournir des glyphes (images de personnages) pour tous ces personnages. (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 boîte où vous attendez un seul caractère, votre application affiche déjà Unicode (probablement l'encodage UTF-8 d'Unicode). Ce qui vous manque, c'est une police qui fournit 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 voulez afficher le chinois, vous avez besoin d'une police avec ces caractères. (La plupart de ces polices affichent également des caractères latins - le type que nous utilisons pour l'anglais - mais pas nécessairement jolies.)

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. Parmi ceux-ci figurent le birman, certains scripts indiens (Devanagari, par exemple) et l'arabe (qui est écrit de droite à gauche et qui a des caractères qui devraient être affichés différemment selon les caractères adjacents).

Mike Maxwell
la source