Современные Unixes используют UTF-8, но это не всегда было так. На RHEL2 - которому всего несколько лет - по умолчанию
$ locale
LANG=C
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=
Предполагается, что языковой стандарт C / POSIX будет 7-битной ASCII-совместимой кодировкой.
Однако, как заявил Джонатан Леффлер, любая кодировка, которая допускает NUL-байты в последовательности символов, не работает в Unix, поскольку системные API-интерфейсы игнорируют локали; все строки считаются байтовыми последовательностями, оканчивающимися на \ 0.