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