Linux / Unix: не-ascii символы в домашнем каталоге? - PullRequest
1 голос
/ 15 декабря 2009

Я использую getenv ("HOME") в C, чтобы получить домашний каталог пользователя для чтения / записи файла настроек. Но возможно ли, что имя файла домашнего каталога может содержать символы, которые не могут быть представлены как 8-битный символ? (например, в кодировке Unicode или UTF-8)

Отличается ли это для разных разновидностей Linux и * BSD?

Заранее спасибо ...

1 Ответ

1 голос
/ 15 декабря 2009

Да, возможно, что строка может быть 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

...