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

all*_*hen 5 graphviz

我已将 DOT 代码文件保存为 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];
}
Run Code Online (Sandbox Code Playgroud)

命令行的结果如下所示。

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"
Run Code Online (Sandbox Code Playgroud)

Aar*_*lla 0

链中某处存在编码问题。源中的图像文件名是\xe5\x9b\xbe\xe5\x85\x83.png,但是当 graphviz 读取它时,它会看到\xe9\x8d\xa5\xe6\x83\xa7\xe5\x8e\x93.png.

\n\n

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

\n\n

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

\n