Như những người khác lưu ý, thực sự không có câu trả lời cho điều này: tên tệp và đường dẫn không có mã hóa; HĐH chỉ xử lý chuỗi byte. Các ứng dụng riêng lẻ có thể chọn giải thích chúng là được mã hóa theo một cách nào đó, nhưng điều này khác nhau.
Cụ thể, Glib (được sử dụng bởi các ứng dụng Gtk +) giả định rằng tất cả các tên tệp được mã hóa UTF-8, bất kể ngôn ngữ của người dùng . Điều này có thể được ghi đè bằng các biến môi trường G_FILENAME_ENCODING và G_BROKEN_FILENAMES .
Mặt khác, Qt mặc định cho rằng tất cả các tên tệp được mã hóa theo ngôn ngữ của người dùng hiện tại . Một ứng dụng riêng lẻ có thể chọn ghi đè giả định này, mặc dù tôi không biết điều gì xảy ra và không có công tắc ghi đè bên ngoài.
Các bản phân phối Linux hiện đại được thiết lập sao cho tất cả người dùng đang sử dụng các vị trí UTF-8 và các đường dẫn trên các hệ thống tập tin nước ngoài được dịch sang UTF-8, do đó, sự khác biệt này trong chiến lược thường không có hiệu lực. Tuy nhiên, nếu bạn thực sự muốn an toàn, bạn không thể giả sử bất kỳ cấu trúc nào về tên tệp ngoài "NUL chấm dứt, '/' - chuỗi byte được phân tách".
(Cũng lưu ý: ngôn ngữ có thể thay đổi theo quy trình. Hai quy trình khác nhau được chạy bởi cùng một người dùng có thể ở các địa điểm khác nhau chỉ bằng cách đặt các biến môi trường khác nhau.)