我已经阅读了主机名的有效字符?和相关的维基页面。我无法确定的是,如果我在具有扩展主机名的 Windows 机器上,gethostname() 会返回名称的 ToAscii 版本还是 UTF8 字符串?
而且更重要的是可以
gethostname(buffer,LEN);
mkdir(buffer, mode);
是否因名称无效而失败?
我已经阅读了主机名的有效字符?和相关的维基页面。我无法确定的是,如果我在具有扩展主机名的 Windows 机器上,gethostname() 会返回名称的 ToAscii 版本还是 UTF8 字符串?
而且更重要的是可以
gethostname(buffer,LEN);
mkdir(buffer, mode);
是否因名称无效而失败?
就 DNS 主机名和 NetBIOS 主机名而言,MSDN上似乎有一些关于主机名的有用信息。似乎表明主机名可能确实是 UTF-8,但这不是决定性的。
因此,如果您从 gethostname 获取 UTF-8,您可能必须将其转换为 UTF-16(或系统默认代码页)才能调用任何创建目录的 Windows 函数。另请注意,不同的文件系统对字符集有不同的规则。NTFS 将非常优雅地处理 Unicode,但 FAT 不会。
您可以尝试将本地计算机的名称更改为非 ASCII 字符(甚至可能是系统默认代码页中没有的某些字符)。