我在C中使用getenv(“HOME”)获取用户的主目录以读取/写入设置文件。但主目录文件名是否可能包含无法表示为8位字符的字符? (例如,unicode或UTF-8编码)
对于各种Linux和* BSD,这是否有所不同?
提前致谢...
答案 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