代码之家  ›  专栏  ›  技术社区  ›  Peter Hull

Linux/Unix:主目录中有非ASCII字符?

  •  1
  • Peter Hull  · 技术社区  · 15 年前

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

    对于不同种类的Linux和*BSD,这会有所不同吗?

    事先谢谢…

    1 回复  |  直到 15 年前
        1
  •  1
  •   Community CDub    8 年前

    是的,字符串可能是utf-8;但是$home的值必须是有效的utf-8字符串,并且字符串将只包含完整有效的utf-8字符。注意,utf-8只使用了可能的8位字符值中的大部分(但不是全部;它省略了0xc0、0xc1、0xf5..0xff)。这意味着你不必担心太多,除非你愿意。特别是,utf-8只使用一个零字节来表示U+0000,这相当于ascii nul或 '\0' 并以单字节(值0)编码。

    结论在不同的平台上没有不同;不同的系统可能会或多或少地使创建需要非ASCIIUTF-8字符的主目录变得困难。

    参见: SO 164430