## GflsEncodingConvert

GflsEncodingConvert — Character encoding conversion

## Functions

gboolean | gfls_encoding_try_convert ()
gboolean | gfls_encoding_convert ()

## Includes

    #include <gfls/gfls.h>

## Description

Functions used for character encoding conversion.

## Functions

### gfls_encoding_try_convert ()

    gboolean
    gfls_encoding_try_convert (GBytes *input_bytes,
                               const gchar *to_codeset,
                               const gchar *from_codeset);

Tries a conversion on `input_bytes` , discarding the output.

`from_codeset` and `to_codeset` must be compatible with iconv, see `gfls_iconv_open()`.

If `input_bytes` ends with an incomplete multi-byte character, that part is ignored. So `input_bytes` can be for example the first chunk of a file when loading it.

#### Parameters

input_bytes | a GBytes. |
to_codeset | destination codeset. |
from_codeset | source codeset. |

#### Returns

`TRUE` if and only if `input_bytes` can be converted without errors, without invalid characters and without fallback characters.

Since: 0.4

### gfls_encoding_convert ()

    gboolean
    gfls_encoding_convert (GBytes *input_bytes,
                           const gchar *to_codeset,
                           const gchar *from_codeset,
                           gboolean allow_invalid_characters,
                           GBytes **output_bytes,
                           GflsBytesRegion **output_bytes_valid_region,
                           GError **error);

This function converts `input_bytes` from a codeset to another.

`from_codeset` and `to_codeset` must be compatible with iconv, see `gfls_iconv_open()`.

Note that `from_codeset` and `to_codeset` can be equal. It is useful to identify the valid characters from the invalid ones.

The output is the combination of `output_bytes` and `output_bytes_valid_region` . Output bytes that are part of `output_bytes_valid_region` are the valid characters (successfully converted). The other output bytes are invalid characters (copied as is from `input_bytes` ).

If `allow_invalid_characters` is `FALSE`:

- As soon as an invalid character is encountered, `FALSE` is returned by this function and `output_bytes` and `output_bytes_valid_region` will return `NULL`.

- Otherwise, if everything goes well, `TRUE` is returned alongside the `output_bytes` and `output_bytes_valid_region` (the latter contains in this case only one, valid sub-region).

#### Parameters

input_bytes | the input GBytes to convert. |
to_codeset | destination codeset. |
from_codeset | source codeset. |
allow_invalid_characters | whether invalid characters are allowed. |
output_bytes | the output GBytes. It must initially point to a `NULL` GBytes value. | [out][transfer full]
output_bytes_valid_region | the output GflsBytesRegion that represents the valid characters. It must initially point to a `NULL` GflsBytesRegion value. | [out][transfer full]
error | location to a `NULL` GError, or `NULL`. |

#### Returns

`TRUE` on success, `FALSE` otherwise.

Since: 0.4