【问题标题】:Is a hostname guaranteed to be a valid Windows directory name?主机名是否保证是有效的 Windows 目录名?
【发布时间】:2012-04-20 16:50:50
【问题描述】:

我已经阅读了Valid characters of a hostname? 和相关的维基页面。我无法确定的是,如果我在具有扩展主机名的 Windows 机器上,gethostname() 会返回名称的 ToAscii 版本,还是 UTF8 字符串?

更重要的是可以

gethostname(buffer,LEN);
mkdir(buffer, mode);

是否曾因名称无效而失败?

【问题讨论】:

  • "失败总是一种选择。"如果 gethostname/mkdir 没有因为名称而失败,它仍然可能因为其他原因而失败。

标签: windows directory hostname


【解决方案1】:

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

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

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

【讨论】:

  • 嗯,我希望得到一个明确的答案,但你提供了一些很好的信息/想法,所以我会继续给你。谢谢。
猜你喜欢
  • 2022-01-09
  • 1970-01-01
  • 2011-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-31
  • 2021-05-18
相关资源
最近更新 更多