В PHP это сделало это для меня (если имя файла закодировано в UTF8):
header('Content-Disposition: attachment;'
. 'filename="' . addslashes(utf8_decode($filename)) . '";'
. 'filename*=utf-8\'\'' . rawurlencode($filename));
Протестировано против IE8-11, Firefox и Chrome. Если браузер может интерпретировать filename * = utf-8 , он будет использовать версию имени файла UTF8, иначе он будет использовать декодированное имя файла. Если ваше имя файла содержит символы, которые не могут быть представлены в ISO-8859-1, вы можете использовать вместо этого iconv
.