Converts a sequence of bytes encoded as UTF-8 to a Unicode character.
p does not point to a valid UTF-8 encoded character, results
are undefined. If you are not sure that the bytes are complete
valid Unicode characters, you should use
A pointer to Unicode character encoded as UTF-8
The data is owned by the caller of the function. The value is a NUL terminated UTF-8 string.