方法

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_AGAING_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