В настоящее время я пытаюсь удалить все специальные символы и акценты из строки UTF-8, превратив их в их эквивалентный символ ASCII, если это возможно.
Поэтому я просто использую этот код:
$result = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $input);
Проблема в том, что, например, слово «дебют» вместо «дебют» превращается в «дбут». Чтобы заставить его работать, мне нужно добавить вызов setlocale, например:
setlocale(LC_ALL, 'en_US.UTF8');
$result = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $input);
И я не понимаю, почему. Я думал, что UTF-8 и ASCII всегда одинаковы, какую бы локаль вы ни использовали.
РЕДАКТИРОВАТЬ: я не имел в виду, что UTF-8 равен ASCII, я имел в виду, что UTF-8 всегда равен UTF-8, а ASCII всегда равен ASCII