diff options
author | Victor Stinner <victor.stinner@haypocalc.com> | 2011-06-30 16:11:18 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@haypocalc.com> | 2011-06-30 16:11:18 (GMT) |
commit | 3909da7fca2ef92b8483f39b7cf89cac4b6e4826 (patch) | |
tree | 2c4056e1b55a8b4f352d1ea1aa6407d2fae13f5f /Lib/xml | |
parent | a0b12a1ca7777f8b417b9753b48a443214331243 (diff) | |
parent | eaf399e3355e6d62b1bb5810b66ad4ff431ece57 (diff) | |
download | cpython-3909da7fca2ef92b8483f39b7cf89cac4b6e4826.zip cpython-3909da7fca2ef92b8483f39b7cf89cac4b6e4826.tar.gz cpython-3909da7fca2ef92b8483f39b7cf89cac4b6e4826.tar.bz2 |
(merge 3.2) Issue #12451: The XInclude default loader of xml.etree now decodes
files from UTF-8 instead of the locale encoding if the encoding is not
specified. It now also opens XML files for the parser in binary mode instead of
the text mode to avoid encoding issues.
Diffstat (limited to 'Lib/xml')
-rw-r--r-- | Lib/xml/etree/ElementInclude.py | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/Lib/xml/etree/ElementInclude.py b/Lib/xml/etree/ElementInclude.py index 84fd754..6cc1b44 100644 --- a/Lib/xml/etree/ElementInclude.py +++ b/Lib/xml/etree/ElementInclude.py @@ -67,7 +67,7 @@ class FatalIncludeError(SyntaxError): # # @param href Resource reference. # @param parse Parse mode. Either "xml" or "text". -# @param encoding Optional text encoding. +# @param encoding Optional text encoding (UTF-8 by default for "text"). # @return The expanded resource. If the parse mode is "xml", this # is an ElementTree instance. If the parse mode is "text", this # is a Unicode string. If the loader fails, it can return None @@ -75,13 +75,14 @@ class FatalIncludeError(SyntaxError): # @throws IOError If the loader fails to load the resource. def default_loader(href, parse, encoding=None): - file = open(href) if parse == "xml": + file = open(href, 'rb') data = ElementTree.parse(file).getroot() else: + if not encoding: + encoding = 'UTF-8' + file = open(href, 'r', encoding=encoding) data = file.read() - if encoding: - data = data.decode(encoding) file.close() return data |