Linux / Unix:主目录中的非ascii字符?

时间:2009-12-15 09:23:48

标签: c linux unicode

我在C中使用getenv(“HOME”)获取用户的主目录以读取/写入设置文件。但主目录文件名是否可能包含无法表示为8位字符的字符? (例如,unicode或UTF-8编码)

对于各种Linux和* BSD,这是否有所不同?

提前致谢...

1 个答案:

答案 0 :(得分:1)

是的,字符串可能是UTF-8;但是,$ HOME的值必须是有效的UTF-8字符串,字符串将只包含完整的有效UTF-8字符。请注意,UTF-8只使用了大多数(但不是全部;它省略了0xC0,0xC1,0xF5..0xFF)可能的8位字符值。这意味着除非您愿意,否则您不必非常担心它。特别是,UTF-8仅使用零字节来表示U + 0000,它相当于ASCII NUL或'\0',并以单个字节(值0)进行编码。

结论并不因平台而异;不同的系统可能会或多或少地创建需要非ASCII UTF-8字符的主目录。

另请参阅:SO 164430