diff --git a/ryu/lib/stringify.py b/ryu/lib/stringify.py index ca762416..8a865b7e 100644 --- a/ryu/lib/stringify.py +++ b/ryu/lib/stringify.py @@ -188,7 +188,11 @@ class StringifyMixin(object): def _get_default_encoder(cls, encode_string): def _encode(v): if isinstance(v, (bytes, six.text_type)): + if isinstance(v, six.text_type): + v = v.encode('utf-8') json_value = encode_string(v) + if six.PY3: + json_value = json_value.decode('ascii') elif isinstance(v, list): json_value = list(map(_encode, v)) elif isinstance(v, dict): diff --git a/ryu/lib/type_desc.py b/ryu/lib/type_desc.py index 612be379..d96fc51f 100644 --- a/ryu/lib/type_desc.py +++ b/ryu/lib/type_desc.py @@ -112,5 +112,11 @@ class IPv6Addr(TypeDescr): class UnknownType(TypeDescr): import base64 - to_user = staticmethod(base64.b64encode) + b64encode = base64.b64encode + if six.PY3: + @classmethod + def to_user(cls, data): + return cls.b64encode(data).decode('ascii') + else: + to_user = staticmethod(base64.b64encode) from_user = staticmethod(base64.b64decode)