Sphinx: Specify encoding when opening files for title extraction

When the encoding is not specified, open() may choose an encoding
based on the locale in use. That encoding may have no relationship
to the encoding of the file being opened. Use the locale from the
document settings instead, which should better match the file's
encoding.

Fixes: #24679
This commit is contained in:
Craig Scott
2023-04-07 18:11:05 +10:00
parent 0dcb545602
commit f0d6010cb5
+3 -2
View File
@@ -242,12 +242,13 @@ class CMakeTransform(Transform):
The cmake --help-*-list commands also depend on this convention. The cmake --help-*-list commands also depend on this convention.
Return the title or False if the document file does not exist. Return the title or False if the document file does not exist.
""" """
env = self.document.settings.env settings = self.document.settings
env = settings.env
title = self.titles.get(docname) title = self.titles.get(docname)
if title is None: if title is None:
fname = os.path.join(env.srcdir, docname+'.rst') fname = os.path.join(env.srcdir, docname+'.rst')
try: try:
f = open(fname, 'r') f = open(fname, 'r', encoding=settings.input_encoding)
except IOError: except IOError:
title = False title = False
else: else: