Обнаружение кодирования и сделать все UTF-8
Я читаю много текстов из различных RSS-каналов и вставляю их в свою базу данных.
конечно, есть несколько различных кодировок символов, используемых в каналах, например UTF-8 и ISO-8859-1.
к сожалению, иногда возникают проблемы с кодировкой текстов. Пример:
"β" в "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;
}
Я проверил его, но он не работает. Что с ним не так?
Comments