我已通读 Valid characters of a hostname?以及相关的维基页面。我无法确定的是,如果我在具有扩展主机名的 Windows 机器上,gethostname() 是否会返回名称的 ToAscii 版本或 UTF8 字符串?
更重要的是可以
gethostname(buffer,LEN);
mkdir(buffer, mode);
是否曾因名称无效而失败?
最佳答案
好像有一些useful information on hostnames在 MSDN 上的 DNS 主机名和 NetBIOS 主机名。似乎暗示主机名可能确实是 UTF-8,但这不是决定性的。
因此,如果您从 gethostname 获得 UTF-8,您可能必须将其转换为 UTF-16(或系统默认代码页)才能调用任何创建目录的 Windows 函数。另请注意,不同的文件系统对字符集有不同的规则。 NTFS 将非常优雅地处理 Unicode,但 FAT 不会。
您可以尝试将本地计算机的名称更改为具有非 ASCII 字符的名称(甚至可能是系统默认代码页中没有的某些字符)。
关于windows - 主机名是否保证是有效的 Windows 目录名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10250319/