# SDL_UCS4ToUTF8

Convert a single Unicode codepoint to UTF-8.

## Header File

Defined in [<SDL3/SDL_stdinc.h>](https://github.com/libsdl-org/SDL/blob/main/include/SDL3/SDL_stdinc.h)

## Syntax

```c
char * SDL_UCS4ToUTF8(Uint32 codepoint, char *dst);
```

## Function Parameters

|                  |               |                                                                          |
| ---------------- | ------------- | ------------------------------------------------------------------------ |
| [Uint32](Uint32) | **codepoint** | a Unicode codepoint to convert to UTF-8.                                 |
| char *           | **dst**       | the location to write the encoded UTF-8. Must point to at least 4 bytes! |

## Return Value

(char *) Returns the first byte past the newly-written UTF-8 sequence.

## Remarks

The buffer pointed to by `dst` must be at least 4 bytes long, as this
function may generate between 1 and 4 bytes of output.

This function returns the first byte _after_ the newly-written UTF-8
sequence, which is useful for encoding multiple codepoints in a loop, or
knowing where to write a NULL-terminator character to end the string (in
either case, plan to have a buffer of _more_ than 4 bytes!).

If `codepoint` is an invalid value (outside the Unicode range, or a UTF-16
surrogate value, etc), this will use U+FFFD (REPLACEMENT CHARACTER) for the
codepoint instead, and not set an error.

If `dst` is NULL, this returns NULL immediately without writing to the
pointer and without setting an error.

## Thread Safety

It is safe to call this function from any thread.

## Version

This function is available since SDL 3.2.0.

----
[CategoryAPI](CategoryAPI), [CategoryAPIFunction](CategoryAPIFunction), [CategoryStdinc](CategoryStdinc)