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

问题描述:

我已阅读Valid characters of a hostname?和相关wiki页面。我无法确定的是,如果我在具有扩展主机名的Windows计算机上,gethostname()是否会返回ToAscii版本的名称或UTF8字符串?是否保证主机名是有效的Windows目录名?

而且更重要的是可以

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

以往由于无法为无效的名称?

+0

”失败总是一种选择。“如果gethostname/mkdir由于名称而不会失败,则可能由于其他原因而失败。 – theglauber 2012-04-20 16:54:59

+0

当然,澄清的问题。 – Thomas 2012-04-20 17:00:25

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

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

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

+0

嗯,我希望得到一个明确的答案,但是你提供了一些很好的信息/想法,所以我会继续向你提供。谢谢。 – Thomas 2012-05-19 04:37:04