Проверьте библиотеку iconv: man iconv_open. Можно преобразовать строку utf-8 в, скажем, UCS-2 или UCS-4, где символы имеют одинаковый размер. iconv также (относительно) переносим и не специфичен для Linux или GNU.
Если Glib, предложенный ранее, доступен для вас (будьте осторожны: он под лицензией GPL), используйте его как лучший способ.