Python Sphinx和blockdiag:非英语字符给出UnicodeError
我有一个RST文件要用Sphinx编译 我有一个方框图 我想为它的一些节点指定非英语名称Python Sphinx和blockdiag:非英语字符给出UnicodeError,python,python-sphinx,Python,Python Sphinx,我有一个RST文件要用Sphinx编译 我有一个方框图 我想为它的一些节点指定非英语名称 .. blockdiag:: diagram { "UberMega" -> "HellSotona" -> "KakoDemon" -> "Кролики и котятки"; } 唉,这给了我一个错误: File "C:\Python2\lib\site-packages\blockdiag\imagedraw\png.py", line 282, in
.. blockdiag::
diagram {
"UberMega" -> "HellSotona" -> "KakoDemon" -> "Кролики и котятки";
}
唉,这给了我一个错误:
File "C:\Python2\lib\site-packages\blockdiag\imagedraw\png.py", line 282, in textlinesize
size = self.draw.textsize(string, font=None)
File "C:\Python2\lib\site-packages\PIL\ImageDraw.py", line 282, in textsize
return font.getsize(text)
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 0-5: ordinal not in range(256)
WARNING: blockdiag error: UnicodeEncodeError caught (check your font settings)
如何处理它?python 2中的字符串默认情况下不是unicode。试试这个:
.. blockdiag::
diagram {
"UberMega" -> "HellSotona" -> "KakoDemon" -> u"Кролики и котятки";
}
默认情况下,python 2中的字符串不是unicode。试试这个:
.. blockdiag::
diagram {
"UberMega" -> "HellSotona" -> "KakoDemon" -> u"Кролики и котятки";
}
只是面临着同样的问题。看起来您正在sphinx文档中使用它 你应该指向你的unicode TrueType字体(把它放在
\u static
目录中,我选择了DejaVuSans。没有理由,在互联网上很容易找到)。将.ttf
文件复制到静态目录,并将此行添加到conf.py
:
import os
blockdiag_fontpath = os.path.abspath(u'_static/fonts/DejaVuSans.ttf')
注意相对路径前的
u
标记。如果项目的路径包含任何非ASCII字符,并且路径不是unicode字符串,则Blockdiag会忽略这一点。刚刚遇到了同样的问题。看起来您正在sphinx文档中使用它
你应该指向你的unicode TrueType字体(把它放在\u static
目录中,我选择了DejaVuSans。没有理由,在互联网上很容易找到)。将.ttf
文件复制到静态目录,并将此行添加到conf.py
:
import os
blockdiag_fontpath = os.path.abspath(u'_static/fonts/DejaVuSans.ttf')
注意相对路径前的
u
标记。如果项目的路径包含任何非ASCII字符,并且路径不是unicode字符串,则Blockdiag将忽略此项。我已经尝试过了。没有什么变化。blockdiag似乎不吃u“”标记。给出了一个错误:C:\Projects\PAT\PyPhased\docs\simple\u pulse\u radar。rst:6:警告:不可编码的源字符,替换为“?”:““矩形波形”->“发射机”->“散热器”->“可用空间”->“目标”->“unicode”("\xCA\xf0\xe\\xeb\xe8\xea> > xe8,如果你把它添加到文件的顶部?“编码- UTF-8-”。可能需要将它添加到CON.PY中,也可以编辑:在每个破折号的中间有一个星号,我不知道为什么它没有显示我已经尝试过。没有什么变化。它看起来像Buldidig不吃U’标记。给出了一个错误:C:\Studio\pAT\PyPhased\docs\simple\u pulse\u radar.rst:6:警告:不可编码的源字符,替换为“?”:““矩形波形”->“发射机”->“散热器”->“自由空间”->“目标”->unicode("\xCa\xf0\xe\xeb\xe8\xea> > xe8,如果你把它添加到文件的顶部?“γ-编码:UTF-8-”。可能需要将它添加到CON.PY中,也可以编辑:在每一组破折号的中间有一个星号,我不知道为什么它不显示错误,源于pIL/枕头的IMADRAW.PY模块,并且我认为这个问题是相关的:o但是,您的问题的解决方案。错误源于PIL/Pillow的ImageDraw.py模块,我认为这个问题与此相关:。但是,我没有解决您问题的方案。