Como han señalado otros, no hay realmente una respuesta para esto: los nombres de archivo y las rutas no tienen codificación; El sistema operativo solo se ocupa de la secuencia de bytes. Las aplicaciones individuales pueden elegir interpretarlas como codificadas de alguna manera, pero esto varía.
Específicamente, Glib (utilizado por las aplicaciones Gtk +) supone que todos los nombres de archivo están codificados en UTF-8, independientemente de la configuración regional del usuario . Esto puede anularse con las variables de entorno G_FILENAME_ENCODING y G_BROKEN_FILENAMES .
Por otro lado, Qt por defecto asume que todos los nombres de archivos están codificados en la configuración regional del usuario actual . Una aplicación individual puede optar por anular esta suposición, aunque no conozco ninguna que lo haga, y no hay un interruptor de anulación externo.
Las distribuciones modernas de Linux están configuradas de tal manera que todos los usuarios están utilizando configuraciones regionales UTF-8 y las rutas en los montajes de sistemas de archivos externos se traducen a UTF-8, por lo que esta diferencia en las estrategias generalmente no tiene efecto. Sin embargo, si realmente desea estar seguro, no puede asumir ninguna estructura sobre los nombres de archivo más allá de "secuencia de bytes delimitada por '/' terminada en NUL".
(También tenga en cuenta: la configuración regional puede variar según el proceso. Dos procesos diferentes ejecutados por el mismo usuario pueden estar en diferentes configuraciones regionales simplemente teniendo diferentes variables de entorno establecidas).