## gmime-charset

gmime-charset — Charset helper functions

## Synopsis

                        GMimeCharset;
    void                g_mime_charset_map_init             (void);
    void                g_mime_charset_map_shutdown         (void);
    const char*         g_mime_locale_charset               (void);
    const char*         g_mime_locale_language              (void);
    const char*         g_mime_charset_language             (const char *charset);
    const char*         g_mime_charset_canon_name           (const char *charset);
    const char*         g_mime_charset_iconv_name           (const char *charset);
    const char*         g_mime_charset_name                 (const char *charset);
    const char*         g_mime_charset_locale_name          (void);
    const char*         g_mime_charset_iso_to_windows       (const char *isocharset);
    void                g_mime_charset_init                 (GMimeCharset *charset);
    void                g_mime_charset_step                 (GMimeCharset *charset,
                                                             const char *inbuf,
                                                             size_t inlen);
    const char*         g_mime_charset_best_name            (GMimeCharset *charset);
    const char*         g_mime_charset_best                 (const char *inbuf,
                                                             size_t inlen);
    gboolean            g_mime_charset_can_encode           (GMimeCharset *mask,
                                                             const char *charset,
                                                             const char *text,
                                                             size_t len);
    void                g_mime_set_user_charsets            (const char **charsets);
    const char**        g_mime_user_charsets                (void);

## Description

Charset utility functions.

## Details

### GMimeCharset

    typedef struct {
    	unsigned int mask;
    	unsigned int level;
    } GMimeCharset;

State used by `g_mime_charset_best()` and `g_mime_charset_best_name()`.

unsigned int `mask`; | charset mask
unsigned int `level`; | charset level

### g_mime_charset_map_init ()

    void                g_mime_charset_map_init             (void);

Initializes the locale charset variable for later calls to `g_mime_locale_charset()`. Only really needs to be called for non- iso-8859-1 locales.

Note: `g_mime_init()` calls this routine for you.

### g_mime_charset_map_shutdown ()

    void                g_mime_charset_map_shutdown         (void);

Frees internal lookup tables created in `g_mime_charset_map_init()`.

### g_mime_locale_charset ()

    const char*         g_mime_locale_charset               (void);

Gets the user's locale charset (or iso-8859-1 by default).

Returns : | the user's locale charset (or iso-8859-1 by default).

### g_mime_locale_language ()

    const char*         g_mime_locale_language              (void);

Gets the user's locale language code (or `NULL` by default).

Returns : | the user's locale language code (or `NULL` by default).

### g_mime_charset_language ()

    const char*         g_mime_charset_language             (const char *charset);

Attempts to find a specific language code that is specific to `charset`. Currently only handles CJK and Russian/Ukranian charset->lang mapping. Everything else will return `NULL`.

`charset` : | charset name
Returns : | a language code that is specific to `charset`, or `NULL` on fail.

### g_mime_charset_canon_name ()

    const char*         g_mime_charset_canon_name           (const char *charset);

Attempts to find a canonical charset name for `charset`.

Note: Will normally return the same value as `g_mime_charset_iconv_name()` unless the system iconv does not use the canonical ISO charset names (such as using ISO8859-1 rather than the canonical form ISO-8859-1).

`charset` : | charset name
Returns : | a canonical charset name for `charset`.

### g_mime_charset_iconv_name ()

    const char*         g_mime_charset_iconv_name           (const char *charset);

Attempts to find an iconv-friendly charset name for `charset`.

`charset` : | charset name
Returns : | an iconv-friendly charset name for `charset`.

### g_mime_charset_name ()

    const char*         g_mime_charset_name                 (const char *charset);

### Warning

`g_mime_charset_name` is deprecated and should not be used in newly-written code.

Attempts to find an iconv-friendly charset name for `charset`.

Note: This function is deprecated. Use `g_mime_charset_iconv_name()` instead.

`charset` : | charset name
Returns : | an iconv-friendly charset name for `charset`.

### g_mime_charset_locale_name ()

    const char*         g_mime_charset_locale_name          (void);

### Warning

`g_mime_charset_locale_name` is deprecated and should not be used in newly-written code.

Gets the user's locale charset (or iso-8859-1 by default).

Note: This function is deprecated. Use `g_mime_locale_charset()` instead.

Returns : | the user's locale charset (or iso-8859-1 by default).

### g_mime_charset_iso_to_windows ()

    const char*         g_mime_charset_iso_to_windows       (const char *isocharset);

Maps the ISO-8859-# charset to the equivalent Windows-CP125# charset.

`isocharset` : | ISO-8859-# charset
Returns : | equivalent Windows charset.

### g_mime_charset_init ()

    void                g_mime_charset_init                 (GMimeCharset *charset);

Initializes a charset mask structure.

`charset` : | charset mask

### g_mime_charset_step ()

    void                g_mime_charset_step                 (GMimeCharset *charset,
                                                             const char *inbuf,
                                                             size_t inlen);

Steps through the input buffer 1 unicode character (glyph) at a time (ie, not necessarily 1 byte at a time). Bitwise 'and' our `charset->mask` with the mask for each glyph. This has the effect of limiting what charsets our `charset->mask` can match.

`charset` : | charset structure
`inbuf` : | input text buffer (must be in UTF-8)
`inlen` : | input buffer length

### g_mime_charset_best_name ()

    const char*         g_mime_charset_best_name            (GMimeCharset *charset);

Gets the best charset name based on the charset mask `charset`.

`charset` : | charset mask
Returns : | a pointer to a string containing the best charset name that can represent the charset mask `charset`.

### g_mime_charset_best ()

    const char*         g_mime_charset_best                 (const char *inbuf,
                                                             size_t inlen);

Computes the best charset to use to encode this text buffer.

`inbuf` : | a UTF-8 text buffer
`inlen` : | input buffer length
Returns : | the charset name best suited for the input text or `NULL` if it is US-ASCII safe.

### g_mime_charset_can_encode ()

    gboolean            g_mime_charset_can_encode           (GMimeCharset *mask,
                                                             const char *charset,
                                                             const char *text,
                                                             size_t len);

Check to see if the UTF-8 `text` will fit safely within `charset`.

`mask` : | a GMimeCharset mask
`charset` : | a charset
`text` : | utf-8 text to check
`len` : | length of `text`
Returns : | `TRUE` if it is safe to encode `text` into `charset` or `FALSE` otherwise.

### g_mime_set_user_charsets ()

    void                g_mime_set_user_charsets            (const char **charsets);

Set a list of charsets for GMime to use as a hint for encoding and decoding headers. The charset list should be in order of preference (e.g. most preferred first, least preferred last).

`charsets` : | an array of user-preferred charsets

### g_mime_user_charsets ()

    const char**        g_mime_user_charsets                (void);

Get the list of user-preferred charsets set with `g_mime_set_user_charsets()`.

Returns : | an array of user-set charsets or `NULL` if none set.