Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Graphviz 无法使用utf-8编码的图像文件名来自定义节点形状_Graphviz - Fatal编程技术网

Graphviz 无法使用utf-8编码的图像文件名来自定义节点形状

Graphviz 无法使用utf-8编码的图像文件名来自定义节点形状,graphviz,Graphviz,我已经用utf-8编码保存了点代码文件。但无法输出具有自定义形状的png图像文件。是否有一个示例演示graphviz的用户指定字符集用法 演示代码在这里 digraph G { bgcolor=black; edge [arrowsize=1, color=red]; node [penwidth=1, color=white, labelloc=b]; BR [shape=box, label="BR", charset="utf-8", image="图

我已经用utf-8编码保存了点代码文件。但无法输出具有自定义形状的png图像文件。是否有一个示例演示graphviz的用户指定字符集用法

演示代码在这里

digraph G {

    bgcolor=black;
    edge [arrowsize=1, color=red];

    node [penwidth=1, color=white, labelloc=b];

    BR [shape=box, label="BR", charset="utf-8", image="图元.png"];
    DS [shape=plaintext, fontname="SimSun", fontcolor=white, fontsize=18, label="测点"];
    BR -> DS[dir=forward];
}
命令行的结果如下所示

C:\dot>dot -Gcharset=utf-8 -Tpng -o demo.png demo.dot
Warning: No such file or directory while opening 鍥惧厓.png
Warning: No or improper image="鍥惧厓.png" for node "BR"

链中的某个地方存在编码问题。源中的图像文件名为
图元.png
但是当graphviz读取它时,它会看到
鍥惧厓.png

这表明您没有将文件保存为UTF-8,或者操作系统的默认编码不是UTF-8。我找不到一种方法来告诉graphviz文档中源代码的编码。选项
charset
仅在“将字符串输入解释为文本标签时”使用。(另请参见“”)


所以它不会解决你的问题。一种解决方案是用HTML实体替换Unicode字符。因此,您可以使用
”圖;元;.png“
,但同样,文档中说“在标签评估期间,这些实体被翻译”,这可能意味着它们不会在其他任何地方翻译。

GraphViz使用iconv转换编码。为什么不能使用utf-8映像文件名?在Mac OS扩展(日志)文件系统的OS X 10.6.8上,它对我来说很好用。您使用的是什么操作系统,文件在什么类型的文件系统上?Graphviz默认使用UTF-8编码来解析图形,因此不需要在命令行中指定,也不需要在节点定义中指定。但它可能没有尝试转换文件名编码你在这里也问了很多问题;您应该在每个堆栈溢出帖子中只问一个问题。