Я читаю много текстов из различных 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;
}
Я проверял это, но это не работает. Что с этим не так?