函数

GLibconvert

声明 [src]

gchar*
g_convert (
  const gchar* str,
  gssize len,
  const gchar* to_codeset,
  const gchar* from_codeset,
  gsize* bytes_read,
  gsize* bytes_written,
  GError** error
)

描述 [src]

将字符串从一个字符集转换为另一个字符集。

请注意,您应当使用 `g_iconv()` 进行流转换。尽管 `bytes_read` 可以返回有关部分字符的信息,但 g_convert_… 函数通常不适用于流转换。如果底层转换器维护内部状态,那么在对 g_convert()、`g_convert_with_iconv()` 或 g_convert_with_fallback() 的后续调用中,此状态不会保留。(这种情况的一个示例是 GNU C 转换器,用于 CP1255,在它不知道下一个字符不是可以与基本字符组合的标记之前,都不会发出基本字符。)

在许多平台上使用诸如 “//TRANSLIT” 的扩展可能不起作用(或者不能很好地起作用)。请考虑改用 `g_str_to_ascii()`。

参数

str

类型:guint8 数组

            the string to convert.
数组的长度在 `len` 参数中指定。
数据归函数调用者所有。
len

类型: gssize

字符串以字节为单位的长度,或者若是以 nul 结尾的字符串,则为 -1(请注意,某些编码可能允许在字符串内出现 nul 字节。在这种情况下,对 `len` 参数使用 -1 是不安全的)。

to_codeset

类型:const gchar*

要将 `str` 转换为其中的字符集的名称。

数据归函数调用者所有。
该值是一个以 NUL 结尾的 UTF-8 字符串。
from_codeset

类型:const gchar*

`str` 的字符集。

数据归函数调用者所有。
该值是一个以 NUL 结尾的 UTF-8 字符串。
bytes_read

类型:gsize*

用于存储输入字符串中已成功转换的字节数的位置,或者为 `NULL`。即使转换成功,如果输入末尾有部分字符,这可能仍小于 `len`。如果出现错误 `G_CONVERT_ERROR_ILLEGAL_SEQUENCE`,则存储的值将是最后一个有效输入序列之后的字节偏移。

该参数将由函数设置。
该参数可以为 `NULL`。
bytes_written

类型:gsize*

存储在输出缓冲区中的字节数(不包括终止符 nul)。

该参数将由函数设置。
该参数可以为 `NULL`。
error

类型:GError **

可恢复错误 的返回位置。

该参数可以为 `NULL`。
如果返回位置不为 `NULL`,那么您必须将其初始化为一个 `NULL` `GError*`。
如果没有错误,该参数将由函数初始化并保留为 `NULL`。
如果出错,该参数将设置为新分配的 `GError`;调用者将拥有该数据的所权,并负责释放该数据。

返回值

类型:guint8 数组

     If the conversion was successful, a newly allocated buffer
     containing the converted string, which must be freed with g_free().
     Otherwise `NULL` and `error` will be set.
数组的长度在 `bytes_written` 参数中。
函数调用者拥有该数据的所权,并负责释放该数据。