На самом деле, как предложено Nistist:
Функция iconv существует для обработки всех странных для вас преобразований, доступна почти на всех языках программирования и имеет специальную опцию, которая пытается преобразовать символы, отсутствующие в целевом наборе, с помощью аппроксимаций.
Используйте iconv для простого преобразования вашей входной строки UTF-8 в 7-битную ASCII.
В противном случае вы всегда прекратите использовать регистр углов: 8-битный ввод, использующий другую кодовую страницу с другим набором символов (таким образом, вообще не работающий с вашей таблицей преобразования), забыл отобразить последний глупый символ с ударением (вы отобразили все серьезные / острые акценты, но забыли нанести на карту чешскую каронскую или нордическую букву '°') и т. д.
Конечно, если вы хотите применить решение к небольшой специфической проблеме (создание файловых файлов, подходящих для файловой системы, для вашей музыкальной коллекции), вам подойдут поисковые массивы (либо массив, который для каждого кода выше) 128 отображает аппроксимацию меньше 128, как предложено JeeBee, или пары источник / цель, предложенные vIceBerg, в зависимости от того, какие функции подстановки уже доступны на выбранном вами языке), потому что он быстро взламывается вместе и быстро проверяет отсутствие элементов.