First of all, see UTF-8 all the way through for all the things you need to do correctly to make non-ASCII characters work in your app in general.
Secondly, it's… tricky… to serve files with non-ASCII file names over the web. 1) You need to ensure that you encode all URLs for these files with percent encoding, as you already seem to do. 2) The web server will take that URL, percent-decode it to a byte string, and then ask the underlying operating/file system to look for a file with a name with that string. This is the tricky part: you won't know exactly what byte string your OS/file system uses to represent that file exactly. You would need to figure that out first, then encode the URL specifically so it will decode exactly to the correct string.
And when you move to a different server, especially if you're moving from Windows to *NIX or vice versa, you can do that all over again since those system do things very differently.
In a nutshell, it's often more hassle than it's worth, and you should store your images with ASCII-only names to avoid all that. Specifically for countries, it'd make a whole lot of sense to use the two-character country codes for the image name (e.g. "cz.jpg").
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…