https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81114
--- Comment #3 from simon at pushface dot org --- Just for interest, this not-very-good code will successfully convert the uppercase-a-acute input c381 to uppercase-a/combining-acute 41cc81: #include <stdio.h> #include <iconv.h> #include <stdint.h> #include <memory.h> int main(void) { uint8_t codepoint[] = {0xc3, 0x81, 0}; char *input = (char *) &codepoint; size_t in_size = 2; char output_buffer[10]; memset(output_buffer, 0, sizeof(output_buffer)); char *output = output_buffer; size_t out_size = 10; iconv_t cd = iconv_open("utf8-mac", "UTF-8"); iconv(cd, &input, &in_size, &output, &out_size); printf("in %d out %d result \"%s\"\n", in_size, out_size, output_buffer); return 0; } but of course only on macOS - https://stackoverflow.com/a/23159081/40851