Если вы примените utf8_encode () к уже строке UTF8, она вернет искаженный вывод UTF8.
Я сделал функцию, которая решает все эти проблемы. Он называется forceUTF8 ().
Вам не нужно знать, какова кодировка ваших строк. Это может быть Latin1 (iso 8859-1) или UTF8, или строка может иметь сочетание двух. forceUTF8 () преобразует все в UTF8.
Я сделал это, потому что служба давала мне все данные, перепутанные, смешивая UTF8 и Latin1 в одной строке.
Использование:
$utf8_string = forceUTF8($utf8_or_latin1_or_mixed_string);
$latin1_string = forceLatin1($utf8_or_latin1_or_mixed_string);
Я включил еще одну функцию fixUFT8 (), которая будет исправлять каждую строку UTF8, которая выглядит искаженной.
Использование:
$utf8_string = fixUTF8($garbled_utf8_string);
Примеры:
echo fixUTF8("Fédération Camerounaise de Football");
echo fixUTF8("Fédération Camerounaise de Football");
echo fixUTF8("FÃÂédÃÂération Camerounaise de Football");
echo fixUTF8("Fédération Camerounaise de Football");
выведет:
Fédération Camerounaise de Football
Fédération Camerounaise de Football
Fédération Camerounaise de Football
Fédération Camerounaise de Football
Обновление: я преобразовал их в статический класс, и теперь они живут в Github:
https://github.com/neitanod/forceutf8