Как упоминал Чак выше, это проблема с базой данных.Если только вы не хотите отображать не-Unicode, то есть латинские символы, тогда да, preg_replace это путь.Вам нужно будет знать наборы символов достаточно хорошо, чтобы отфильтровать то, что вы не хотите.
Но если вы просто хотите, чтобы все отображалось правильно, то есть без символов мусора, то измените соответствующие части БД на utf-8.
Например, если вы используете mySQL, попробуйте изменить поле и кодировку таблицы, чтобы иметь возможность принимать UTF-8.По умолчанию latin1_general_ci - попробуйте изменить его на utf8_general_ci .Надеюсь, это объясняет мою точку зрения.