Нашел чуть более элегантное решение: $name = rawurldecode(basename(rawurlencode($name))); Пока работает без нареканий.