Antes de tudo, veja UTF-8 até o fim para todas as coisas que você precisa fazer corretamente para que caracteres não ASCII funcionem em seu aplicativo em geral.
Em segundo lugar, é… complicado… servir arquivos com nomes de arquivo não ASCII pela web. 1) Você precisa garantir que você codifique todos os URLs para esses arquivos com codificação percentual, como você já parece fazer. 2) O servidor da Web pegará essa URL, decodificará em porcentagem para uma string de bytes e, em seguida, solicitará ao sistema operacional/de arquivos subjacente para procurar um arquivo com um nome com essa string. Esta é a parte complicada:você não saberá exatamente qual string de bytes seu sistema operacional/arquivo usa para representar exatamente esse arquivo. Você precisaria descobrir isso primeiro e, em seguida, codificar a URL especificamente para que ela decodificasse exatamente na string correta.
E quando você muda para um servidor diferente, especialmente se estiver migrando do Windows para o *NIX ou vice-versa, você pode fazer tudo de novo, pois esses sistemas fazem as coisas de maneira muito diferente.
Em poucas palavras, muitas vezes é mais incômodo do que vale a pena, e você deve armazenar suas imagens com nomes somente ASCII para evitar tudo isso. Especificamente para países, faria muito sentido usar os códigos de país de dois caracteres para o nome da imagem (por exemplo, "cz.jpg").