Skip to content

Commit

Permalink
bpo-41048: mimetypes should read the rule file using UTF-8, not the l…
Browse files Browse the repository at this point in the history
…ocale encoding (GH-20998)

(cherry picked from commit 7f569c9)

Co-authored-by: Srinivas Reddy Thatiparthy (శ్రీనివాస్  రెడ్డి తాటిపర్తి) <thatiparthysreenivas@gmail.com>
  • Loading branch information
miss-islington and srinivasreddy committed Jun 29, 2020
1 parent 02134da commit 9e36b6e
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 1 deletion.
2 changes: 1 addition & 1 deletion Lib/mimetypes.py
Expand Up @@ -372,7 +372,7 @@ def init(files=None):

def read_mime_types(file):
try:
f = open(file)
f = open(file, encoding='utf-8')
except OSError:
return None
with f:
Expand Down
12 changes: 12 additions & 0 deletions Lib/test/test_mimetypes.py
Expand Up @@ -67,6 +67,18 @@ def test_read_mime_types(self):
mime_dict = mimetypes.read_mime_types(file)
eq(mime_dict[".pyunit"], "x-application/x-unittest")

# bpo-41048: read_mime_types should read the rule file with 'utf-8' encoding.
# Not with locale encoding. _bootlocale has been imported because io.open(...)
# uses it.
with support.temp_dir() as directory:
data = "application/no-mans-land Fran\u00E7ais"
file = pathlib.Path(directory, "sample.mimetype")
file.write_text(data, encoding='utf-8')
import _bootlocale
with support.swap_attr(_bootlocale, 'getpreferredencoding', lambda do_setlocale=True: 'ASCII'):
mime_dict = mimetypes.read_mime_types(file)
eq(mime_dict[".Français"], "application/no-mans-land")

def test_non_standard_types(self):
eq = self.assertEqual
# First try strict
Expand Down
1 change: 1 addition & 0 deletions Misc/ACKS
Expand Up @@ -1705,6 +1705,7 @@ Mikhail Terekhov
Victor Terrón
Pablo Galindo
Richard M. Tew
Srinivas Reddy Thatiparthy
Tobias Thelen
Christian Theune
Févry Thibault
Expand Down
@@ -0,0 +1,2 @@
:func:`mimetypes.read_mime_types` function reads the rule file using UTF-8 encoding, not the locale encoding.
Patch by Srinivas Reddy Thatiparthy.

0 comments on commit 9e36b6e

Please sign in to comment.