diff --git a/lib/yaml/reader.py b/lib/yaml/reader.py index b2f10b09..4b377d61 100644 --- a/lib/yaml/reader.py +++ b/lib/yaml/reader.py @@ -139,7 +139,7 @@ def determine_encoding(self): if has_ucs4: NON_PRINTABLE = re.compile(u'[^\x09\x0A\x0D\x20-\x7E\x85\xA0-\uD7FF\uE000-\uFFFD\U00010000-\U0010ffff]') else: - NON_PRINTABLE = re.compile(u'[^\x09\x0A\x0D\x20-\x7E\x85\xA0-\uD7FF\uE000-\uFFFD]') + NON_PRINTABLE = re.compile(u'[^\x09\x0A\x0D\x20-\x7E\x85\xA0-\uFFFD]|(?:^|[^\uD800-\uDBFF])[\uDC00-\uDFFF]|[\uD800-\uDBFF](?:[^\uDC00-\uDFFF]|$)') def check_printable(self, data): match = self.NON_PRINTABLE.search(data) if match: