调用fopen或open时使用的编码是什么?

xer*_*nic 13 c linux fopen system-calls

当我们在linux中调用系统调用时,像' open'或stdio函数一样' fopen'我们必须提供一个' const char * filename'.我的问题是这里使用的编码是什么?它是utf-8还是ascii还是iso8859-x?它取决于系统或环境设置吗?

我知道在MS Windows中有一个_wopen接受utf-16.

And*_*gor 8

它是一个字节字符串,解释取决于特定的文件系统.


Jes*_*erE 5

Linux 上的文件系统调用与编码无关,即它们不需要(不需要)了解特定的编码。就他们而言,文件名参数指向的字节字符串按原样传递到文件系统。文件系统期望文件名采用正确的编码(通常是 UTF-8,如 Matthew Talbert 提到的)。

这意味着您通常不需要执行任何操作(文件名被视为不透明的字节字符串),但这实际上取决于您从何处接收文件名,以及是否需要以任何方式操作文件名。