方法
GLibIOChannelset_encoding
声明 [src]
GIOStatus
g_io_channel_set_encoding (
GIOChannel* channel,
const gchar* encoding,
GError** error
)
描述 [src]
设置通道的输入/输出编码。内部编码始终为 UTF-8。外部文件的默认编码为 UTF-8。
编码 NULL
可以安全地与二进制数据一起使用。
只有以下条件之一为真时,才能设置编码
-
通道刚刚创建,尚未写入或读取。
-
通道为只写。
-
通道是文件,并且文件指针刚刚通过调用 g_io_channel_seek_position() 变更位置。(这将刷新所有内部缓冲区。)
-
当前编码为
NULL
或 UTF-8。 -
其中一个(新 API)读取函数刚刚返回
G_IO_STATUS_EOF
(或,在 g_io_channel_read_to_end() 的情况下,返回G_IO_STATUS_NORMAL
)。 -
函数
g_io_channel_read_chars()
或g_io_channel_read_unichar()
已返回G_IO_STATUS_AGAIN
或G_IO_STATUS_ERROR
。这在G_CONVERT_ERROR_ILLEGAL_SEQUENCE
的情况下可能有用。从 g_io_channel_read_line()、g_io_channel_read_line_string() 或g_io_channel_read_to_end()
返回这些状态并不能保证编码可以更改。
不符合上述条件之一的通道不能使用 G_SEEK_CUR
偏移量调用 g_io_channel_seek_position()
,并且如果是“可寻址”的,在调用“读取” API 中的一个函数之后,不能调用 g_io_channel_write_chars()
。
参数
encoding
-
类型:
const gchar*
编码类型。
参数可以是 NULL
。数据由方法的调用者拥有。 这是一个以 NUL 结尾的 UTF-8 字符串。 error
-
类型:
GError **
用于可恢复错误的返回位置。
参数可以是 NULL
。如果返回位置不是 NULL
,那么您必须将其初始化为一个空的GError*
。如果没有错误发生,该方法将使参数被初始化为 NULL
。如果发生错误,参数将被设置为一个新分配的 GError
;调用者将获得数据的所有权,并负责释放它。
返回值
类型: GIOStatus
如果编码成功设置,则为 G_IO_STATUS_NORMAL
。