J'expérimentais avec un diagramme DOT et j'ai essayé de faire ce qui suit:
:! dot -Tpng -oFab.png %
J'ai reçu une erreur car mon nom de fichier a un caractère spécial (" ó
" dans "Fabricación"):
C:\windows\system32\cmd.exe /c ( dot -Tpng -oFab.png Fabricaci├│n.gv)
Error: dot: can't open Fabricaci├│n.gv
shell returned 2
Hit any key to close this window...
Comme vous pouvez le voir, le caractère spécial est modifié pour " ├│
". C'est avec vim et gVim 7.4 sous Win7 et NTFS, donc je suppose que le nom de fichier est en UTF16 . Je suppose également qu'en invoquant le shell / cmd, le nom de fichier est interprété comme un autre encodage (merci à Carpetsmoker de l' avoir signalé par défaut à la page de code 850 ).
Comment puis-je réparer cela?
Bien sûr, je peux simplement renommer le fichier, mais j'aimerais savoir pourquoi cela se produit et comment le corriger.
Mise à jour : Je viens de trouver cette question dans superuser.SE (grâce aux commentaires de @ ChristianBrabandt ), mais cela ne semble pas aider non plus.
cmd
accepte le nom de fichier, mais l'installation d'un environnement de type Unix serait ma propre gestion préférée.cmd.exe
n'est pas unicode, mais la page de codes 850 . Voir également cette réponse .Réponses:
Réponse courte
Le problème réside dans
dot.exe
. GraphViz peut ouvrir des fichiers avec des chemins Unicode sous Linux mais pas Windows, sauf (peut-être) s'il est compilé avec Visual Studio 2005.Recherche
La page de codes est définie sur
850
, Vim codant surUTF-8
.Il ne donne pas exactement la même erreur, mais le
dot.exe
semble recevoir un mauvais argument. J'ai essayé de passer le même nom de fichier à l'autre programme.Et cela a bien fonctionné. L'exécution des deux
dot.exe
ettype
directement à partir decmd.exe
donne le même résultat, donc ni la console Windows ni Vim ne sont le problème. La prochaine chose qui pourrait provoquer cette erreur étaitdot.exe
elle-même. Je soupçonnais qu'il ne savait tout simplement pas comment gérer correctement les arguments codés Unicode, car même toutes les commandes de la console ne le font pas:https://ss64.com/nt/chcp.html
J'ai cherché sur le Web s'il y avait un support pour Unicode dans GraphViz et j'ai trouvé qu'il supporte les fichiers Unicode mais rien sur le support Unicode pour les noms de fichiers. Je n'ai trouvé aucun rapport sur le traqueur de bogues GraphViz ni aucun message sur le forum concernant une autre personne intéressée à lire un fichier nommé Unicode. J'ai donc cherché dans la source. Voici à quoi
dot.exe
ressemble le point d'entrée:graphviz-2.40.1\cmd\dot\dot.c
En suivant le
argv
bas du terrier du lapin:graphviz-2.40.1\lib\common\args.c
graphviz-2.40.1\lib\common\input.c
Et enfin
graphviz-2.40.1\lib\common\input.c
Comme le dit le MDSN:
Malheureusement, la seule option consiste à renommer le fichier.
la source