Unicode (utf-8) avec git-bash
j'ai du mal à faire travailler unicode pour git-bash (sur windows 7). J'ai essayé beaucoup de choses sans succès. Bien que, je ne suis pas tout à fait sûr de ce qui est responsable pour cela, donc je pourrais travailler dans la mauvaise direction.
il semble vraiment que cela devrait être possible comme l'encodage pour cmd.exe peut être changé en unicode avec'chcp 65001'.
voici quelques choses que j'ai essayé (à part l'évidence de regarder à travers la configuration options dans l'interface graphique).
-
variables d'environnement".bashrc". Je suppose que c'est logique que ça ne marche pas puisque je pense que c'est un truc linux. Le "locale" de la commande n'existe pas.
export LC_ALL=en_US.UTF-8 export LANG=en_US.UTF-8 export LANGUAGE=en_US.UTF-8
-
à partir de cmd.exe, changer l'encodage en unicode avec 'chcp 65001' et ensuite démarrer git-bash. Cela me fait obtenir une permission refusée en essayant de Catter mon fichier de test unicode. Cependant, cat un fichier sans unicode fonctionne très bien. Comme on l'a vu, je retourne au cmd.exe je peux toujours "cat" le dossier. En utilisant mon encodage par défaut (437), je peux Catter le fichier dans bash (pas de permission refusée mais la sortie est brouillée).
S:>chcp 65001 Active code page: 65001 S:>"C:Program Files (x86)Gitbinsh.exe" --login -i zarac@TOWELIE /z cat /s/unicode.txt cat: write error: Permission denied zarac@TOWELIE /z cat /s/nounicode.txt abc zarac@TOWELIE /z L /s/unicode.txt -rw-r--r-- 1 zarac Administ 7 May 18 10:30 /s/unicode.txt zarac@TOWELIE /z whoami toweliezarac zarac@TOWELIE /z exit Z:>type S:unicode.txt abc£
-
utiliser le drapeau /U lors du démarrage de l'interpréteur de commandes (c'est logique que cela ne fonctionne pas parce que ce n'est pas tout à fait ce que c'est si-je-comprends-correctement, mais ça a à voir avec unicode donc je l'ai essayé).
C:WindowsSysWOW64cmd.exe /U /C "C:Program Files (x86)Gitbinsh.exe" --login -i
-
comme je préfère utiliser Console2, j'ai essayé d'ajouter une valeur dword nommée CodePage avec la valeur 65001 (décimal) dans le registre de windows sous [HKEY_CURRENT_USERConsole] ainsi que [HKEY_CURRENT_USERConsoleGit Bash]. Cela semble avoir le même effet que de définir 'chcp 65001' accepter que c'est "automatique". (http://stackoverflow.com/questions/379240/is-there-a-windows-command-shell-that-will-display-unicode-characters)
-
JPSOT's TCC / LE
-
PowerCMD
-
stackoverflow
-
duckduckgo
-
ixquick / google
ainsi, la méthode 2 semble viable si cette question de permission peut être corrigée. Cependant, je suis ouvert à peu près n'importe quelle solution bien que je préfère si je peux utiliser Console2 (principalement en raison de c'est chouette onglet). Peut-être qu'une solution serait de configurer un serveur SSH et d'utiliser Putty/Kitty pour s'y connecter, mais c'est tout simplement faux! ;)
PS. Y a-t-il des documents officiels pour git-bash?
5 réponses
J'ai fait face au même problème dans MSYS Git 2.8.0 et comme il s'est avéré qu'il fallait juste changer la configuration.
$ git --version
git version 2.8.0.windows.1
la configuration par défaut de la console Git Bash dans mon système ne montrait pas de noms de fichiers Grecs.
$cd ~
$ls
AppData/
'Application Data'@
Contacts/
Cookies@
Desktop/
Documents/
Downloads/
Favorites/
Links/
'Local Settings'@
NTUSER.DAT
.
.
.
''$'6461'' '$'65636371617664'' '$'646775'@
la dernière ligne doit afficher" Τα ωγγραφά μου", la traduction grecque de"mes Documents". Pour le corriger, j'ai suivi les étapes suivantes:
-
Vérifiez votre configuration locale existante
$locale LANG=en LC_CTYPE="C" LC_NUMERIC="C" LC_TIME="C" LC_COLLATE="C" LC_MONETARY="C" LC_MESSAGES="C" LC_ALL=
comme indiqué ci-dessus, dans mon cas, il n'était pas UTF-8
-
changez la locale pour un encodage UTF-8. Cliquez sur L'icône sur le côté gauche de la barre de titre de MINGW, sélectionnez "Options" et dans la catégorie "texte", choisissez "UTF-8" jeu de caractères. Vous devez également choisir une police unicode, telle que la "Lucida Console"par défaut. Ma configuration ressemble comme suit:
-
changer la langue de la fenêtre actuelle (pas besoin de faire cela sur les fenêtres futures, car ils seront créés avec les paramètres de l'étape 2)
$ LANG='C.UTF-8'
-
la commande ls doit maintenant s'afficher correctement
AppData/ 'Application Data'@ Contacts/ Cookies@ Desktop/ Documents/ Downloads/ Favorites/ Links/ 'Local Settings'@ NTUSER.DAT . . . 'Τα έγγραφά μου'@
comme CharlesB l'a dit dans un commentaire, msysgit 1.7.10 gère unicode correctement. Il y a encore quelques problèmes, mais je peux confirmer que la mise à jour a résolu le problème que j'avais.
voir: https://github.com/msysgit/msysgit/wiki/Git-for-Windows-Unicode-Support
vérifier si le problème persiste avec L'Eig 2.1 (août 2014).
Voir commettre 617ce96 ou commettre 1c950a5 par Karsten Blees ( kblees
)
Win32: prise en charge de la sortie de la console Unicode
WriteConsoleW
semble être le seul moyen d'imprimer de manière fiable unicode à la console (sans conversion de page de code bizarre).redirige aussi
vfprintf
vers la versionwinansi.c
.
Win32: ajouter des fonctions de conversion Unicode
ajouter des fonctions de conversion Unicode pour convertir entre Windows natif UTF-16LE encodage en UTF-8 et retour.
pour prendre en charge les dépôts avec des noms de fichiers encodés en héritage, la fonction de conversion UTF-8 à UTF-16 essaie de créer des noms de fichiers uniques et valides, même pour les UTF-8 invalides . des séquences d'octets, de sorte que ces dépôts puissent être vérifiés sans erreur.
il est probable que ce soit un port de quelque chose déjà intégré dans msysgit, mais au moins cela signifie que la version Windows de Git n'aura pas à diverger/Patcher du code source principal de Git repo afin d'inclure ces améliorations.
je peux voir qu'il y a des problèmes avec l'encodage des caractères avec git bash pour windows. Moins pour le travail avec git lui-même et les outils qu'il expédie avec (curl, cat, grep etc.). Je n'ai pas rencontré de problèmes avec ceux-ci au fil des ans encodage des caractères liés.
normalement avec chaque nouvelle version les problèmes sont mieux résolus. Par exemple: avec la version d'il y a un an, je ne pouvais pas entrer des caractères comme ä
dans le shell, donc il n'était pas possible d'écrire
echo "ä"
pour tester rapidement si UTF-8 est supporté et à quel niveau. Une solution consiste à écrire les bytes-séquences octal:
$ echo -e "0344"
ä
encore des problèmes que j'ai quand j'exécute mon Windows php.exe binaire à texte de sortie:
$ php -r 'echo "\xC3\xA4";'
ä
cela ne donne pas le " ä
" dans le terminal, mais il sorties " ä
" à la place. La solution que j'ai pour cela, c'est que j'enroule la commande php
dans un bash-script qui traite la sortie par cat
:
#!/bin/bash
{ php.exe "$@" 2>&1 1>&3 | cat 1>&2; } 3>&1 | cat
réf. reg. stdout + stderr chat
Cela fait magiquement puis php
fonctionne à nouveau:
$ php -r 'echo "\xC3\xA4";'
ä
S'applique à
$ git --version
git version 1.9.4.msysgit.1
je dois admettre que je manque une compréhension plus profonde Pourquoi c'est ainsi. Mais je suis enfin heureux que j'ai trouvé un contournement à utilisez php dans Git bash avec le support UTF-8.
a trouvé cette réponse ailleurs:
chcp.com 65001
Git bash rssa windows7 problème de codage
C'est ce qui l'a résolu pour moi.