函数
GLibconvert_with_iconv
声明 [源代码]
gchar*
g_convert_with_iconv (
const gchar* str,
gssize len,
GIConv converter,
gsize* bytes_read,
gsize* bytes_written,
GError** error
)
描述 [源代码]
将某字符串从一个字符集转换成另一个字符集。
请注意,应使用 g_iconv()
进行流式转换。尽管 bytes_read
可以返回有关部分字符的信息,g_convert_… 函数一般不适用于流式转换。如果底层转换器保留内部状态,则在对 g_convert()、g_convert_with_iconv()
或 g_convert_with_fallback() 连续调用期间不会保留此状态。(一个示例是 GNU C 转换器,用于 CP1255,该转换器在得知下一个字符不是可与基础字符组合的标记之前不会发出基础字符。)
有效性字符集中存在但表示形式缺失的字符将导致 G_CONVERT_ERROR_ILLEGAL_SEQUENCE
错误。这不同于 iconv()
说明,其将此行为留给实现来规定。需要注意,此错误代码也是输入字符集中无效字节序列返回的错误代码。要实现不可表示字符转换的定义行为,请使用 g_convert_with_fallback()。
此函数不直接可用于语言绑定。
参数
str
-
类型:
guint8
数组the string to convert.
数组长度在 len
参数中指定。数据由函数调用方所有。 len
-
类型:
gssize
字符串长度(单位为字节),如果字符串以空值结尾,则为 -1(请注意,一些编码可能允许在字符串中出现空字节。在这种情况下,为
len
参数使用 -1 是不安全的)。 converter
-
类型:
GIConv
g_iconv_open() 中的转换描述符。
bytes_read
-
类型:
gsize*
用于存储输入字符串中已成功转换的字节数的位置,或为
NULL
。即使转换成功,如果输入的结尾有部分字符,将来可能小于len
。如果发生错误G_CONVERT_ERROR_ILLEGAL_SEQUENCE
,则存储的值将是最后一个有效输入序列后的字节偏移量。参数将由函数设置。 参数可以是 NULL
。 bytes_written
-
类型:
gsize*
存储在输出缓冲区中的字节数(不包括终止
nul
)。参数将由函数设置。 参数可以是 NULL
。 error
-
类型:
GError **
用于 可恢复错误 的返回位置。
参数可以是 NULL
。如果返回位置不为 NULL
,则必须将其初始化为NULL
GError*
。如果无错误,参数将由该函数初始化为 NULL
。如果发生错误,参数会设置为新建的 GError
;调用方将拥有该数据的所有权,并负责释放它。