Prima di tutto, vedi UTF-8 fino in fondo per tutte le cose che devi fare correttamente per far funzionare i caratteri non ASCII nella tua app in generale.
In secondo luogo, è... complicato... servire file con nomi di file non ASCII sul Web. 1) Devi assicurarti di codificare tutti gli URL per questi file con la codifica percentuale, come sembri già fare. 2) Il server Web prenderà quell'URL, lo decodificherà in percentuale in una stringa di byte, quindi chiederà al sistema operativo/file sottostante di cercare un file con un nome con quella stringa. Questa è la parte difficile:non saprai esattamente quale stringa di byte utilizza il tuo sistema operativo/file system per rappresentare esattamente quel file. Dovresti prima capirlo, quindi codificare l'URL in modo specifico in modo che venga decodificato esattamente nella stringa corretta.
E quando ti sposti su un server diverso, specialmente se passi da Windows a *NIX o viceversa, puoi farlo di nuovo da capo poiché quei sistemi fanno le cose in modo molto diverso.
In poche parole, spesso è più una seccatura di quanto valga la pena e dovresti archiviare le tue immagini con nomi solo ASCII per evitare tutto ciò. In particolare per i paesi, avrebbe molto senso utilizzare i codici paese a due caratteri per il nome dell'immagine (ad es. "cz.jpg").