Saya sedang bereksperimen dengan diagram DOT dan mencoba melakukan hal berikut:
:! dot -Tpng -oFab.png %
Saya mendapat kesalahan karena nama file saya memiliki karakter khusus (" ó
" dalam "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...
Seperti yang Anda lihat, karakter khusus sedang diubah untuk " ├│
". Ini dengan vim dan gVim 7.4 di bawah Win7 dan NTFS, jadi saya berasumsi nama filenya ada di UTF16 . Saya juga berasumsi bahwa ketika menjalankan shell / cmd nama file sedang ditafsirkan sebagai beberapa pengkodean lainnya (terima kasih kepada Carpetsmoker untuk menunjukkannya secara default ke kode halaman 850 ).
Bagaimana saya bisa memperbaikinya?
Tentu, saya cukup mengganti nama file, tetapi saya ingin tahu mengapa ini terjadi dan bagaimana cara memperbaikinya.
Pembaruan : Saya baru saja menemukan pertanyaan ini di superuser.SE (terima kasih atas umpan balik dari @ ChristianBrabandt ), tetapi sepertinya juga tidak membantu.
cmd
menerima nama file, tetapi menginstal lingkungan seperti Unix akan menjadi pilihan saya sendiri.cmd.exe
bukan unicode, tetapi kode halaman 850 . Lihat juga jawaban ini .Jawaban:
Jawaban singkat
Masalahnya terletak pada
dot.exe
. GraphViz dapat membuka file dengan jalur Unicode di Linux tetapi tidak Windows, kecuali (mungkin) jika dikompilasi dengan Visual Studio 2005.Penelitian
Halaman kode diatur ke
850
, Vim encoding keUTF-8
.Itu tidak memberikan kesalahan yang sama persis, tetapi
dot.exe
tampaknya menerima argumen yang salah. Saya mencoba meneruskan nama file yang sama ke program lain.Dan itu bekerja dengan baik. Menjalankan keduanya
dot.exe
dantype
langsung daricmd.exe
memberikan hasil yang sama, sehingga baik Windows Console maupun Vim tidak menjadi masalah. Hal berikutnya yang dapat menyebabkan kesalahan itudot.exe
sendiri. Kecurigaan saya adalah bahwa ia tidak tahu bagaimana menangani argumen kode Unicode dengan benar, karena tidak semua perintah konsol melakukannya:https://ss64.com/nt/chcp.html
Saya mencari di web jika ada dukungan untuk Unicode di GraphViz dan menemukan bahwa itu mendukung file Unicode tetapi tidak ada tentang dukungan Unicode untuk nama file. Saya tidak menemukan laporan tentang pelacak bug GraphViz atau posting di forum tentang orang lain yang tertarik membaca file bernama Unicode. Jadi saya mencarinya di sumber.
dot.exe
Seperti apa titik masuknya:graphviz-2.40.1\cmd\dot\dot.c
Mengikuti bagian
argv
bawah lubang kelinci:graphviz-2.40.1\lib\common\args.c
graphviz-2.40.1\lib\common\input.c
Dan akhirnya
graphviz-2.40.1\lib\common\input.c
Seperti yang dinyatakan MDSN:
Sayangnya, satu-satunya pilihan di sana adalah mengubah nama file.
sumber