gpt4 book ai didi

c - 是否有一种标准方法可以使用 Unicode 字符串文件路径执行 fopen?

转载 作者:太空狗 更新时间:2023-10-29 16:41:57 27 4
gpt4 key购买 nike

是否有一种标准方法可以使用 Unicode 字符串文件路径执行 fopen

最佳答案

不,没有标准方法。操作系统之间存在一些差异。以下是不同操作系统处理非 ASCII 文件名的方式。

Linux

在 Linux 下,文件名只是一个二进制字符串。大多数现代发行版的惯例是对非 ASCII 文件名使用 UTF-8。但一开始,通常将文件名编码为 ISO-8859-1。选择编码基本上取决于每个应用程序,因此您甚至可以在同一文件系统上使用不同的编码。 LANG 环境变量可以提示您首选编码是什么。但是如今,您可能可以在任何地方都采用 UTF-8。

但这并非没有问题,因为包含无效 UTF-8 序列的文件名在大多数 Linux 文件系统上都是完全有效的。如果您只支持 UTF-8,您将如何指定这样的文件名?理想情况下,您应该同时支持 UTF-8 和二进制文件名。

操作系统

OS X 上的 HFS 文件系统在内部使用 Unicode (UTF-16) 文件名。大多数 C(和 POSIX)库函数,如 fopen 接受 UTF-8 字符串(因为它们是 8 位兼容的)并在内部转换它们。

window

Windows API 使用 UTF-16 作为文件名,但是 fopen 使用当前的代码页,不管它是什么(UTF-8 刚刚成为一个选项)。许多 C 库函数都有接受 UTF-16(Windows 上的 wchar_t)的非标准等效项。例如,_wfopen而不是 fopen

关于c - 是否有一种标准方法可以使用 Unicode 字符串文件路径执行 fopen?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35010548/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com