¿Y por qué usas decode() y no encode()?
Es decir, los archivos binarios no conocen de "charsets" así que tampoco va por ahí la cosa.
No deberías estar manipulando los nombres de archivo sólo por que sí, en todo caso ¿no es mejor normalizar los nombres y ya?