def str_decode__String_ANY_ANY(space, w_string, w_encoding=None, w_errors=None): from pypy.objspace.std.unicodetype import _get_encoding_and_errors, \ unicode_from_string, decode_object encoding, errors = _get_encoding_and_errors(space, w_encoding, w_errors) if encoding is None and errors is None: return unicode_from_string(space, w_string) return decode_object(space, w_string, encoding, errors)
def unicode_w(w_self, space): # Use the default encoding. from pypy.objspace.std.unicodetype import (unicode_from_string, decode_object, _get_encoding_and_errors) w_defaultencoding = space.call_function(space.sys.get( 'getdefaultencoding')) encoding, errors = _get_encoding_and_errors(space, w_defaultencoding, space.w_None) if encoding is None and errors is None: return space.unicode_w(unicode_from_string(space, w_self)) return space.unicode_w(decode_object(space, w_self, encoding, errors))
def decode_string(space, w_str, encoding, errors): from pypy.objspace.std.unicodetype import decode_object if errors is None or errors == "strict": node = w_str._node if encoding == 'ascii': result = rope.str_decode_ascii(node) if result is not None: return W_RopeUnicodeObject(result) elif encoding == 'latin-1': assert node.is_bytestring() return W_RopeUnicodeObject(node) elif encoding == "utf-8": result = rope.str_decode_utf8(node) if result is not None: return W_RopeUnicodeObject(result) w_result = decode_object(space, w_str, encoding, errors) return w_result