PHP Преобразование Windows-1251 в UTF 8

У меня есть небольшой html-код, и мне нужно преобразовать его в UTF-8.
Я использую этот iconv("windows-1251", "utf-8", $html);

Весь текст преобразуется правильно, но если текст, например, в теге <i>...</i> , то он не преобразует текст, и я вижу что-то подобное.

Если у вас есть доступ к пакету Multibye, вы можете попробовать его. Смотрите страницу PHP здесь: http://www.php.net/manual/en/function.mb-convert-encoding.php

 $html_utf8 = mb_convert_encoding($html, "utf-8", "windows-1251"); 

Вы знаете, сообщение, похожее на то, что кодировка для страницы – это windows-1251 , но текст закодирован в utf-8 .
Я видел эту проблему в одном из моих проектов, поэтому просто измените кодировку изменений на странице в utf-8 и этот текст будет показан правильно.

Позвольте мне привести несколько примеров:
если страница в utf-8 , но текст в windows-1251 вы увидите что-то вроде этого:
???? ?? ?????? ??? ????? ??? ??????? ?? ????? ???? ??? ?????

if page in windows-1251 , но текст в utf-8 вы видите так:
"Мобильные телефоны";"Apple iPhone 4

Я всегда использую ручную конвертацию (по-характеру), например:

 $input= 'Обращение РљР°С'; $s= str_replace('С?','fgr43443443',$input); $s= mb_convert_encoding($s, "windows-1251", "utf-8"); $s= str_replace('fgr43443443','ш',$s); echo $s; 

ps не забывайте, кодировка файла .php должна быть UTF8. также в заголовке HTML, вставьте стандартную декларацию для UTF8

 <meta http-equiv="content-type" content="text/html; charset=UTF-8"> 

В большинстве решений отсутствует преобразование в однобайтовое кодирование. Я использую mb_convert_encoding ($ string, 'windows-1251') для преобразования из UTF-8 в моем случае.

 function ru2Lat($string) { $rus = array('ё','ж','ц','ч','ш','щ','ю','я','Ё','Ж','Ц','Ч','Ш','Щ','Ю','Я'); $lat = array('yo','zh','tc','ch','sh','sh','yu','ya','YO','ZH','TC','CH','SH','SH','YU','YA'); $string = str_replace($rus,$lat,$string); $string = strtr($string, "АБВГДЕЗИЙКЛМНОПРСТУФХЪЫЬЭабвгдезийклмнопрстуфхъыьэ", "ABVGDEZIJKLMNOPRSTUFH_I_Eabvgdezijklmnoprstufh'i'e"); return($string); } function transliterate($string){ if (!is_string($string)) return $string; return ru2lat(mb_convert_encoding($string,'windows-1251')); } function transliterate_array($a){ $c = array_map(transliterate,$a); return $c; } 

попробуйте это, работает для меня!

 $result = str_replace ('€', '€' , $result);