• utf8.h
  • #ifndef SHARE__UTF8_H
    #define SHARE__UTF8_H
    
    /*
     * Convert a string between UTF-8 and the locale's charset.
     * Invalid bytes are replaced by '#', and characters that are
     * not available in the target encoding are replaced by '?'.
     *
     * If the locale's charset is not set explicitly then it is
     * obtained using nl_langinfo(CODESET), where available, the
     * environment variable CHARSET, or assumed to be US-ASCII.
     *
     * Return value of conversion functions:
     *
     *  -1 : memory allocation failed
     *   0 : data was converted exactly
     *   1 : valid data was converted approximately (using '?')
     *   2 : input was invalid (but still converted, using '#')
     *   3 : unknown encoding (but still converted, using '?')
     */
    
    int utf8_encode(const char *from, char **to);
    int utf8_decode(const char *from, char **to);
    
    #endif