Allegro 5 api
#include <allegro5/allegro.h> size_t al_ustr_encode_utf16(const ALLEGRO_USTR *us, uint16_t *s, size_t n)
Encode the string into the given buffer, in UTF-16. Returns the number of bytes written. There are never more than n bytes written. The minimum size to encode the complete string can be queried with al_ustr_size_utf16(3alleg5). If the n parameter is smaller than that, the string will be truncated but still always 0 terminated.
al_ustr_size_utf16(3alleg5), al_utf16_encode(3alleg5)