Ссылка UTF-8 (Unicode) должна быть закодирована с помощью rawurlencode, который обслуживает необходимые последовательности символов в стандартном режиме соответствия ... например:
<?php
echo '<a href="' . rawurlencode("امیر علی") . '">' . htmlentities("امیر علی", ENT_QUOTES, "UTF-8") . '</a>';
?>
Если вы видите источник, вы можете увидеть:
<a href="%D8%A7%D9%85%DB%8C%D8%B1%20%D8%B9%D9%84%DB%8C">امیر علی</a>
rawurlencode
должен использоваться для связи UTF-8
(http://php.net/manual/en/function.rawurlencode.php)
htmlentities
должен использоваться для текста UTF-8
(http://php.net/manual/en/function.htmlentities.php)
При использовании этого подхода ваша страница должна обслуживаться как UTF-8:
ini_set('default_charset', 'UTF-8');
поставить в верхней части вашего сценария, и, возможно, сценарий должен быть внутренне закодирован в UTF-8 без BOM (Byte Order Mark) ...
Таким образом, вы можете напрямую использовать UTF-8 в своем проекте, ничего не теряя ...
Надеюсь, это поможет.