函数

GLibconvert_with_fallback

声明 [源代码]

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

说明 [源代码]

将字符串从一个字符集转换为另一个字符集,可能包括输出中不可表示字符的回退序列。请注意,不能保证对 fallback 中的回退序列进行的指定将得到遵从。一些系统可能会在其 iconv() 函数中从 from_codesetto_codeset 进行近似转换,在这种情况下,GLib 将仅返回该近似转换。

请注意,应使用 g_iconv() 进行流转换。尽管 bytes_read 可以返回有关部分字符的信息,但 g_convert_… 函数通常不适合用于流。如果底层转换器维护内部状态,则在对 g_convert()g_convert_with_iconv()g_convert_with_fallback() 进行连续调用时不会保留此状态。(一个示例是 GNU C 专为 CP1255 设计的转换器,在它知道下一个字符不是可与基字符组合的标记之前不会发出基字符。)

参数

str

类型: guint8

           the string to convert.
该数组的长度在 len 参数中指定。
数据由函数的调用者拥有。
len

类型: gssize

字符串的字节长度,如果字符串以空值终止,则为 -1(请注意,一些编码可能允许空值字节出现在字符串中。在这种情况下,为 len 参数使用 -1 是不安全的)。

to_codeset

类型: const gchar*

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

数据由函数的调用者拥有。
该值为 NUL 终止的 UTF-8 字符串。
from_codeset

类型: const gchar*

str 的字符集。

数据由函数的调用者拥有。
该值为 NUL 终止的 UTF-8 字符串。
fallback

类型: const gchar*

 UTF-8 字符串,用于替换目标编码中不存在的字符。(该字符串必须能在目标编码中表示)。如果为 NULL,则目标编码中不存在的字符将表示为 Unicode 转义字符 \uxxxx 或 \Uxxxxyyyy。

数据由函数的调用者拥有。
该值为 NUL 终止的 UTF-8 字符串。
bytes_read

类型: gsize*

用于存储成功转换的输入字符串中的字节数的位置,也可以为 NULL。即使转换成功,如果输入的末尾有部分字符,该值也可能小于 len

该参数将由函数设置。
该参数可以为 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 参数中。
函数调用方应负责数据的拥有权,并负责释放数据。