gpt4 book ai didi

c - 有没有一种标准的方法来使用 Unicode 字符串文件路径进行 fopen?

转载 作者:IT老高 更新时间:2023-10-28 22:34:57 30 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

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

Windows

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

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

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