Tout d'abord, consultez UTF-8 tout au long pour toutes les choses que vous devez faire correctement pour que les caractères non-ASCII fonctionnent dans votre application en général.
Deuxièmement, il est… délicat… de servir des fichiers avec des noms de fichiers non ASCII sur le Web. 1) Vous devez vous assurer que vous encodez toutes les URL de ces fichiers avec un encodage en pourcentage, comme vous semblez déjà le faire. 2) Le serveur Web prendra cette URL, la décodera en pourcentage en une chaîne d'octets, puis demandera au système d'exploitation/de fichiers sous-jacent de rechercher un fichier avec un nom avec cette chaîne. C'est la partie délicate :vous ne saurez pas exactement quelle chaîne d'octets votre système d'exploitation/fichiers utilise pour représenter exactement ce fichier. Vous devez d'abord comprendre cela, puis encoder spécifiquement l'URL afin qu'elle décode exactement la chaîne correcte.
Et lorsque vous passez à un autre serveur, en particulier si vous passez de Windows à *NIX ou vice versa, vous pouvez tout recommencer car ces systèmes fonctionnent très différemment.
En un mot, c'est souvent plus compliqué que ça n'en vaut la peine, et vous devriez stocker vos images avec des noms ASCII uniquement pour éviter tout cela. Spécifiquement pour les pays, il serait très logique d'utiliser les codes de pays à deux caractères pour le nom de l'image (par exemple "cz.jpg").