主机名是否保证为有效的Windows目录名?

主机名是否保证为有效的Windows目录名?,windows,directory,hostname,Windows,Directory,Hostname,我已经通读了相关的维基页面。我无法确定的是,如果我在一台具有扩展主机名的Windows计算机上,gethostname()是否会返回该名称的ToAscii版本,或者UTF8字符串 更重要的是,我们可以 gethostname(buffer,LEN); mkdir(buffer, mode); 是否因名称无效而失败?MSDN上的DNS主机名和NetBIOS主机名似乎有一些错误。这似乎表明主机名可能确实是UTF-8,但它不是决定性的 因此,如果您从gethostname获得UTF-8,您可能必须将

我已经通读了相关的维基页面。我无法确定的是,如果我在一台具有扩展主机名的Windows计算机上,gethostname()是否会返回该名称的ToAscii版本,或者UTF8字符串

更重要的是,我们可以

gethostname(buffer,LEN);
mkdir(buffer, mode);
是否因名称无效而失败?

MSDN上的DNS主机名和NetBIOS主机名似乎有一些错误。这似乎表明主机名可能确实是UTF-8,但它不是决定性的

因此,如果您从gethostname获得UTF-8,您可能必须将其转换为UTF-16(或系统默认代码页),以便调用生成目录的任何Windows函数。还要注意,不同的文件系统对字符集有不同的规则。NTFS将非常优雅地处理Unicode,但FAT不会

您可以尝试将本地计算机的名称更改为非ASCII字符的名称(甚至可能是系统默认代码页中没有的字符)。

MSDN上似乎有一些DNS主机名和NetBIOS主机名。这似乎表明主机名可能确实是UTF-8,但它不是决定性的

因此,如果您从gethostname获得UTF-8,您可能必须将其转换为UTF-16(或系统默认代码页),以便调用生成目录的任何Windows函数。还要注意,不同的文件系统对字符集有不同的规则。NTFS将非常优雅地处理Unicode,但FAT不会


您可以尝试将本地计算机的名称更改为非ASCII字符的名称(甚至可能是系统默认代码页中没有的字符)。

“失败始终是一个选项。”如果gethostname/mkdir没有因为名称而失败,它仍可能因其他原因失败。“失败始终是一个选项。”如果gethostname/mkdir没有因为名称而失败,那么它可能仍然会因为其他原因失败。我希望得到一个明确的答案,但是您提供了一些好的信息/想法,所以我会继续给您。谢谢。嗯,我希望得到一个明确的答案,但是你提供了一些好的信息/想法,所以我会继续给你。谢谢