c - Linux/Unix : Non-ascii characters in home directory?

标签 c linux unicode

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

这对于各种 Linux 和 *BSD 有什么不同吗?

提前致谢...

最佳答案

是的,字符串可能是 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

关于c - Linux/Unix : Non-ascii characters in home directory?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1906203/

相关文章:

c - C 中的 NULL 值和 "0"字符串?

c - 如何在 x86 DOS 程序集中读取没有 "consuming"的键盘输入?

.net - 是否有考虑 StringComparison 的 String.Split() ?

c - setsockopt() 相当于非套接字文件描述符?

linux - 在支持大多数文件类型的 Ubuntu 上安装 ImageMagick

linux - 无法在 Ubuntu 14.04 LTS 上通过 wget 建立 SSL 连接

linux - 设置 bash shell 或命令提示符以运行 Python 项目

perl - 如何处理 Perl Web 应用程序中无效的 UTF-8 字符?

bash - 带有 unicode 文件路径的 runco​​mmand (haskell)

c - 程序-switch case 的输出是什么?