Вам также необходимо преобразовать вашу строку в UTF8.
utf8_encode () не проверяет, в какой кодировке была ваша строка, и иногда она дает вам испорченную строку, поэтому я создал функцию под названием Encoding:: toUTF8 (), чтобы сделать это правильно.
Вам не нужно знать, какова кодировка ваших строк.Это может быть Latin1 (iso 8859-1), Windows-1252 или UTF8, или в строке может быть их сочетание.Encoding :: toUTF8 () преобразует все в UTF8.
Я сделал это, потому что служба давала мне поток данных, которые были испорчены, смешивая эти кодировки в одной строке.
Использование:
$utf8_string = Encoding::toUTF8($mixed_string);
$latin1_string = Encoding::toLatin1($mixed_string);
Я включил еще одну функцию, Encoding :: fixUTF8 (), которая будет фиксировать каждую строку UTF8, которая выглядит искаженным продуктом после многократного кодирования в UTF8.
Использование:
$utf8_string = Encoding::fixUTF8($garbled_utf8_string);
Примеры:
echo Encoding::fixUTF8("Fédération Camerounaise de Football");
echo Encoding::fixUTF8("Fédération Camerounaise de Football");
echo Encoding::fixUTF8("FÃÂédÃÂération Camerounaise de Football");
echo Encoding::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
Загрузить:
http://dl.dropbox.com/u/186012/PHP/forceUTF8.zip