1#ifndef SHARE__UTF8_H
2#define SHARE__UTF8_H
3
4/*
5 * Convert a string between UTF-8 and the locale's charset.
6 * Invalid bytes are replaced by '#', and characters that are
7 * not available in the target encoding are replaced by '?'.
8 *
9 * If the locale's charset is not set explicitly then it is
10 * obtained using nl_langinfo(CODESET), where available, the
11 * environment variable CHARSET, or assumed to be US-ASCII.
12 *
13 * Return value of conversion functions:
14 *
15 *  -1 : memory allocation failed
16 *   0 : data was converted exactly
17 *   1 : valid data was converted approximately (using '?')
18 *   2 : input was invalid (but still converted, using '#')
19 *   3 : unknown encoding (but still converted, using '?')
20 */
21
22int utf8_encode(const char *from, char **to);
23int utf8_decode(const char *from, char **to);
24
25#endif
26