【发布时间】:2011-09-17 04:27:36
【问题描述】:
我必须在 linux (Ubuntu) 中用 c 创建一个 utf8 文件(比如 utf8_test.txt)。 我尝试了 fopen(),但它根据语言环境创建 hte 文件 - 因为语言环境是 en_IN,所以我猜它是在 Ascii 中创建的。
是否有任何接口或函数可以让我指定要打开的文件的格式,或者我需要在文件的开头添加一些字节,以便操作系统知道它是一个 UTF8 文件?
请提供您宝贵的意见。
谢谢。
【问题讨论】:
我必须在 linux (Ubuntu) 中用 c 创建一个 utf8 文件(比如 utf8_test.txt)。 我尝试了 fopen(),但它根据语言环境创建 hte 文件 - 因为语言环境是 en_IN,所以我猜它是在 Ascii 中创建的。
是否有任何接口或函数可以让我指定要打开的文件的格式,或者我需要在文件的开头添加一些字节,以便操作系统知道它是一个 UTF8 文件?
请提供您宝贵的意见。
谢谢。
【问题讨论】:
GLib 包含处理 UTF-8 文本的例程,而 libiconv 可用于在各种字符集之间进行转换,包括 UTF-8。
【讨论】:
fopen 可用于写入二进制数据流。您的语言环境不相关。
您应该检查您是否真的向文件发送了 UTF-8 字节流。您可以通过在文件上运行十六进制编辑器来做到这一点,例如xxd,并查看文件中是否出现 UTF-8 序列。
如果文件中没有 UTF-8 字节,则发送到文件的字节流不正确。
如果文件中确实包含 UTF-8 字节,那么您的问题只是显示问题之一。
【讨论】: