Вы должны убедиться, что ваш исходный файл фактически сохраняется в UTF-8, но не в Windows-1251. В противном случае эти символы не будут представлять действительные секвенции UTF-8.
Update:
Правильно, Iconv // ПЕРЕВЕСТИ, кажется, зависит от региона. Он может работать корректно, если вы установите его на исходный язык . Так что в вашем примере это будет какой-то кириллический язык, я думаю, но не «en_US».
Но на самом деле, если вам нужна транслитерация только для одного языка, это гораздо более надежным, чтобы сделать простую таблицу перевода ОТСИДЕТЬ:
$trans = [
'а' => 'a',
'д' => 'd',
'п' => 'p',
...
];
$translit = str_replace(array_keys($trans), array_values($trans), $source_string);
Но если вам это нужно, чтобы работать для всех/неизвестных языков, вы будете должны использовать что-то более сложное, например http://php.net/manual/en/class.transliterator.php
Да, я уверен, что файл сохранен в UTF-8. – WindBridges
Хорошо, это не так просто. Я обновил ответ - см. Выше. Надеюсь, это поможет. – astax