Seperti dicatat oleh orang lain, sebenarnya tidak ada jawaban untuk ini: nama file dan jalur tidak memiliki penyandian; OS hanya menangani urutan byte. Aplikasi individual dapat memilih untuk menafsirkannya sebagai dikodekan dalam beberapa cara, tetapi ini bervariasi.
Secara khusus, Glib (digunakan oleh aplikasi Gtk +) mengasumsikan bahwa semua nama file dikodekan UTF-8, terlepas dari lokal pengguna . Ini mungkin ditimpa dengan variabel lingkungan G_FILENAME_ENCODING dan G_BROKEN_FILENAMES .
Di sisi lain, Qt default untuk mengasumsikan bahwa semua nama file dikodekan dalam lokal pengguna saat ini . Aplikasi individual dapat memilih untuk mengesampingkan asumsi ini, meskipun saya tidak tahu ada yang melakukannya, dan tidak ada sakelar penggantian eksternal.
Distribusi Linux modern diatur sedemikian rupa sehingga semua pengguna menggunakan lokal UTF-8 dan jalur pada mount sistem file asing diterjemahkan ke UTF-8, sehingga perbedaan dalam strategi ini umumnya tidak berpengaruh. Namun, jika Anda benar-benar ingin aman, Anda tidak dapat mengasumsikan struktur apa pun tentang nama file di luar "diakhiri NUL, '/' - urutan byte yang dibatasi".
(Perhatikan juga: lokal dapat bervariasi menurut proses. Dua proses berbeda yang dijalankan oleh pengguna yang sama mungkin berada di lokasi yang berbeda hanya dengan mengatur variabel lingkungan yang berbeda.)