def PyUnicode_AsXXXString(space, w_unicode): """Encode a Unicode object and return the result as Python string object. Error handling is "strict". Return NULL if an exception was raised by the codec.""" if not PyUnicode_Check(space, w_unicode): PyErr_BadArgument(space) return unicodetype.encode_object(space, w_unicode, encoding, "strict")
def PyUnicode_AsUnicodeEscapeString(space, w_unicode): """Encode a Unicode object using Unicode-Escape and return the result as Python string object. Error handling is "strict". Return NULL if an exception was raised by the codec.""" if not PyUnicode_Check(space, w_unicode): PyErr_BadArgument(space) return unicodeobject.encode_object(space, w_unicode, 'unicode-escape', 'strict')
def PyUnicode_SetDefaultEncoding(space, encoding): """Sets the currently active default encoding. Returns 0 on success, -1 in case of an error.""" if not encoding: PyErr_BadArgument(space) w_encoding = space.newtext(rffi.charp2str(encoding)) setdefaultencoding(space, w_encoding) default_encoding[0] = '\x00' return 0
def _unicode_as_encoded_object(space, pyobj, llencoding, llerrors): if not PyUnicode_Check(space, pyobj): PyErr_BadArgument(space) encoding = errors = None if llencoding: encoding = rffi.charp2str(llencoding) if llerrors: errors = rffi.charp2str(llerrors) w_unicode = from_ref(space, pyobj) return unicodeobject.encode_object(space, w_unicode, encoding, errors)
def PyUnicode_AsEncodedObject(space, w_unicode, llencoding, llerrors): """Encode a Unicode object and return the result as Python object. encoding and errors have the same meaning as the parameters of the same name in the Unicode encode() method. The codec to be used is looked up using the Python codec registry. Return NULL if an exception was raised by the codec.""" if not PyUnicode_Check(space, w_unicode): PyErr_BadArgument(space) encoding = errors = None if llencoding: encoding = rffi.charp2str(llencoding) if llerrors: errors = rffi.charp2str(llerrors) return unicodetype.encode_object(space, w_unicode, encoding, errors)
def PyString_AsEncodedObject(space, w_str, encoding, errors): """Encode a string object using the codec registered for encoding and return the result as Python object. encoding and errors have the same meaning as the parameters of the same name in the string encode() method. The codec to be used is looked up using the Python codec registry. Return NULL if an exception was raised by the codec. This function is not available in 3.x and does not have a PyBytes alias.""" if not PyString_Check(space, w_str): PyErr_BadArgument(space) w_encoding = w_errors = space.w_None if encoding: w_encoding = space.wrap(rffi.charp2str(encoding)) if errors: w_errors = space.wrap(rffi.charp2str(errors)) return space.call_method(w_str, 'encode', w_encoding, w_errors)
def PyUnicode_AsUTF8AndSize(space, ref, psize): if not PyUnicode_Check(space, ref): PyErr_BadArgument(space) if not get_ready(ref): res = _PyUnicode_Ready(space, ref) if not get_utf8(ref): # Copy unicode buffer w_unicode = from_ref(space, ref) w_encoded = unicodeobject.encode_object(space, w_unicode, "utf-8", "strict") s = space.bytes_w(w_encoded) set_utf8(ref, rffi.str2charp(s)) set_utf8_len(ref, len(s)) if psize: psize[0] = get_utf8_len(ref) return get_utf8(ref)