Я читаю много текстов из различных RSS-каналов и вставляю их в свою базу данных.
Конечно, в каналах используется несколько разных кодировок символов, например, UTF-8 и ISO 8859-1.
К сожалению, иногда возникают проблемы с кодировкой текстов. Пример:
«Ss» в «Fußball» в моей базе данных должно выглядеть так: «ÂŸ». Если это «В», оно отображается правильно.
Иногда «ß» в «Fußball» в моей базе данных выглядит так: «ÃŸÂŸ». Тогда это отображается неправильно, конечно.
В других случаях «ß» сохраняется как «ß», то есть без каких-либо изменений. Тогда это также отображается неправильно.
Что я могу сделать, чтобы избежать случаев 2 и 3?
Как я могу сделать все в той же кодировке, желательно UTF-8? Когда я должен использовать utf8_encode()
, когда я должен использовать utf8_decode()
(ясно, каков эффект, но когда я должен использовать функции?) И когда я ничего не должен делать с вводом?
Как мне сделать все одинаковое кодирование? Возможно с функцией mb_detect_encoding()
? Могу ли я написать функцию для этого? Итак, мои проблемы:
- Как узнать, какую кодировку использует текст?
- Как мне преобразовать его в UTF-8 - какой бы ни была старая кодировка?
Будет ли функция, как эта работа?
function correct_encoding($text) {
$current_encoding = mb_detect_encoding($text, 'auto');
$text = iconv($current_encoding, 'UTF-8', $text);
return $text;
}
Я проверял это, но это не работает. Что с этим не так?