diff options
-rw-r--r-- | lib/yaml/__init__.py | 4 | ||||
-rw-r--r-- | lib/yaml/representer.py | 17 | ||||
-rw-r--r-- | lib/yaml/serializer.py | 2 |
3 files changed, 14 insertions, 9 deletions
diff --git a/lib/yaml/__init__.py b/lib/yaml/__init__.py index 6097345..e6a3526 100644 --- a/lib/yaml/__init__.py +++ b/lib/yaml/__init__.py @@ -67,7 +67,7 @@ def emit(events, writer=None, Emitter=Emitter): def dump_all(natives, writer=None, Emitter=Emitter, Serializer=Serializer, Representer=Representer, - encoding=None, line_break=None, canonical=None, + encoding='utf-8', line_break=None, canonical=None, indent=None, width=None, allow_unicode=None): if writer is None: try: @@ -91,7 +91,7 @@ def dump_all(natives, writer=None, Emitter=Emitter, def safe_dump_all(natives, writer=None, Emitter=Emitter, Serializer=Serializer, Representer=SafeRepresenter, - encoding=None, line_break=None, canonical=None, + encoding='utf-8', line_break=None, canonical=None, indent=None, width=None, allow_unicode=None): return dump_all(natives, writer, Emitter, Serializer, Representer, encoding, line_break, canonical, indent, width, allow_unicode) diff --git a/lib/yaml/representer.py b/lib/yaml/representer.py index caf06c6..6fe74fc 100644 --- a/lib/yaml/representer.py +++ b/lib/yaml/representer.py @@ -119,14 +119,19 @@ class SafeRepresenter(Detector, BaseRepresenter): u'null') def represent_str(self, native): + encoding = None try: - native.encode('ascii') - ascii = True - except (UnicodeDecodeError, UnicodeEncodeError): - ascii = False - if ascii: + unicode(native, 'ascii') + encoding = 'ascii' + except UnicodeDecodeError: + try: + unicode(native, 'utf-8') + encoding = 'utf-8' + except UnicodeDecodeError: + pass + if encoding: return self.represent_scalar(u'tag:yaml.org,2002:str', - unicode(native, 'ascii')) + unicode(native, encoding)) else: return self.represent_scalar(u'tag:yaml.org,2002:binary', unicode(native.encode('base64')), style='|') diff --git a/lib/yaml/serializer.py b/lib/yaml/serializer.py index 6a5aafc..5807a3a 100644 --- a/lib/yaml/serializer.py +++ b/lib/yaml/serializer.py @@ -19,7 +19,7 @@ class Serializer: self.anchors = {} self.last_anchor_id = 0 self.closed = None - self.open(encoding, line_break, canonical, indent, width) + self.open(encoding, line_break, canonical, indent, width, allow_unicode) def open(self, encoding=None, line_break=None, canonical=None, indent=None, width=None, allow_unicode=None): |