У меня есть сканер, который загружает веб-страницы, очищает определенный контент, а затем сохраняет этот контент в базе данных MySQL.Позже это содержимое отображается на веб-странице при поиске (стандартная настройка типа поисковой системы).
Обычно содержимое имеет два разных типа кодирования ... UTF-8
или ISO-8859-1
или не указывается,В моей таблице базы данных используется кодировка cp1252 west european ( latin1 )
.До сих пор я просто фильтровал все символы, которые не являются буквенно-цифровыми, пробелами или пунктуацией, используя регулярные выражения перед сохранением содержимого в MySQL.По большей части это устранило все проблемы с кодировкой символов, и содержимое отображается правильно при вызове и выводе в HTML.Вот код, который я использую:
function clean_string( $string )
{
$string = trim( $string );
$string = preg_replace( '/[^a-zA-Z0-9\s\p{P}]/', '', $string );
$string = $mysqli->real_escape_string( $string );
return $string;
}
Теперь мне нужно начать захват «специальных» символов, таких как товарный знак, авторские права и зарегистрированные символы, и у меня возникли проблемы.Независимо от того, что я пытаюсь, я получаю странные символы при повторном отображении контента в HTML.
Из того, что я прочитал, звучит так, будто я должен использовать UTF-8
для кодирования базы данных.Как мне убедиться, что все мои данные преобразованы должным образом перед сохранением в базе данных?Помните, что мой оригинальный контент поступает со всего Интернета в различных форматах кодирования.Есть ли какие-то другие шаги, которые я пропускаю и которые могут вызывать у меня проблемы?