Всякий раз, когда вы видите такие вещи, как �
, это признак того, что у вас несоответствие кодировки.
Если у вас есть база данных и все HTML настроены в кодировке UTF-8, у вас не возникнет проблем. Скорее всего, ваш HTML или база данных настроены на использование Latin-1 (ISO 8859-1), а другой UTF-8 или наоборот.
Вы можете решить эту проблему, объединив один набор символов. Я лично предпочитаю UTF-8, так как он универсален. Однако, если вы не можете сделать это, вы можете использовать PHP для скрытого перехода между UTF-8 и Latin-1, используя следующие функции.
UTF-8 до Latin-1:
$latin_string = utf8_decode($unicode_string);
Латинский-1 до UTF-8:
$unicode_string = utf8_encode($latin_string);
Если вы закодируете свои данные перед отправкой в базу данных и декодируете их перед отображением или наоборот, в зависимости от конфигурации базы данных / html, ваша проблема будет решена.
В качестве другой альтернативы, если на вашем сервере доступно расширение PHP iconv, вы можете использовать его для точной транслитерации или преобразования в обычный ASCII.
http://www.php.net/manual/en/function.iconv.php