Як зазначають інші, насправді немає відповіді на це: у іменах і каналах немає кодування; ОС працює лише з послідовністю байтів. Окремі додатки можуть вирішити трактувати їх як певне кодування, але це різниться.
Зокрема, Glib (використовується програмами Gtk +) передбачає, що всі імена файлів кодуються UTF-8, незалежно від мови користувача . Це може бути замінено змінними середовища G_FILENAME_ENCODING та G_BROKEN_FILENAMES .
З іншого боку, Qt за замовчуванням припускає, що всі імена файлів закодовані в локальній точці користувача . Індивідуальна програма може вирішити це припущення, хоча я не знаю жодного з цих дій, і немає зовнішнього перемикача переопрацювання.
Сучасні дистрибутиви Linux налаштовані так, що всі користувачі використовують локалі UTF-8, а шляхи на кріпленнях іноземної файлової системи переводяться на UTF-8, тому ця різниця в стратегіях взагалі не впливає. Однак, якщо ви дійсно хочете бути в безпеці, ви не можете припустити будь-яку структуру щодо імен файлів, що не перевищують "NUL-terminated", / / - обмежена послідовність байтів ".
(Також зауважте: локал може залежати від процесу. Два різні процеси, які виконуються одним і тим же користувачем, можуть бути в різних локалях, просто встановивши різні змінні середовища.)