我已閱讀Valid characters of a hostname?和相關wiki頁面。我無法確定的是,如果我在具有擴展主機名的Windows計算機上,gethostname()是否會返回ToAscii版本的名稱或UTF8字符串?是否保證主機名是有效的Windows目錄名?
而且更重要的是可以
gethostname(buffer,LEN);
mkdir(buffer, mode);
以往由於無法爲無效的名稱?
我已閱讀Valid characters of a hostname?和相關wiki頁面。我無法確定的是,如果我在具有擴展主機名的Windows計算機上,gethostname()是否會返回ToAscii版本的名稱或UTF8字符串?是否保證主機名是有效的Windows目錄名?
而且更重要的是可以
gethostname(buffer,LEN);
mkdir(buffer, mode);
以往由於無法爲無效的名稱?
MSDN上似乎有一些useful information on hostnames在DNS主機名和NetBIOS主機名方面。似乎表明主機名可能確實是UTF-8,但這不是決定性的。
因此,如果您從gethostname獲得UTF-8,則可能必須將其轉換爲UTF-16(或系統默認代碼頁)才能調用任何生成目錄的Windows函數。還要注意不同的文件系統對字符集有不同的規則。 NTFS將非常優雅地處理Unicode,但FAT不會。
您可以嘗試將本地計算機的名稱更改爲非ASCII字符(甚至某些不在系統默認代碼頁中的字符)。 「
嗯,我希望得到一個明確的答案,但是你提供了一些很好的信息/想法,所以我會繼續向你提供。謝謝。 – Thomas 2012-05-19 04:37:04
」失敗總是一種選擇。「如果gethostname/mkdir由於名稱而不會失敗,則可能由於其他原因而失敗。 – theglauber 2012-04-20 16:54:59
當然,澄清的問題。 – Thomas 2012-04-20 17:00:25