2013-03-20 2 views
1

С нескольких дней я пытаюсь реализовать некоторый код для загрузки некоторого примера контента с другого сайта на мой сайт. У меня проблема с кодировкой - польский язык. Исходный сайт - ISO-8859-2 и цель в UTF-8. Работает в Chrome и Safari, не работает в FF, Opera и IE. Что я делаю не так?file_get_contents encoding - работает Chrome и Safari, не работает Firefox, Opera, IE

index.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Test_site</title> 



<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.js"></script> 
<script type="text/javascript"> 
    $("document").ready(function() { 

     $("#content").load("curl.php #news_ajax"); 

    }); 
</script> 


</head> 
<body> 

<h1>Test site</h1> 
<div id="content"><img src="ajax-loader.gif" alt="Loading..." /></div> 

</body> 
</html> 

curl.php

<?php 
    $url = 'http://www.dominikanie.pl/'; 
    $htm = file_get_contents($url); 
    $domain = "http://www.dominikanie.pl/"; 
    $htm = preg_replace("/(href|src)\=\"([^(http)])(\/)?/", "$1=\"$domain$2", $htm); 
    $htm = mb_convert_encoding($htm, "ISO-8859-2", 
      mb_detect_encoding($htm, "UTF-8, ISO-8859-2", true)); 
    echo $htm; 

?> 

Я попытался Iconv, но не результат. Тест site

ответ

2
  • Веб-браузер не имеет отношения к файлу_get_contents.

  • Используйте CURL вместо file_get_content. Документация here

  • Также dominikanie.pl (источник) находится в UTF-8, а не ISO. Вот почему ваша кодировка не работает.

  • Вы можете попробовать отправить данные как XML или объект jSon при запросе его через AJAX.

  • Используйте новый JQuery

  • iconv vs mb - Я предпочитаю Iconv. Также мой опыт заключается в том, что определение кодировки не всегда работает так, как должно. Особенно, когда не хватает данных для тестирования или есть некоторые странные объекты, такие как специальные символы MsWord (например, польский) »

  • У str_repleace иногда возникают проблемы с польскими символами. Его редкий, но у меня были некоторые проблемы с ним в прошлом. Также не используйте htmlentities(). Он действительно хотел бы сломал PL символов:]

1

Источник сайт ISO-8859-2 и цель в UTF-8

Так оно и должно быть

$htm = mb_convert_encoding($htm, "UTF-8", 
     mb_detect_encoding($htm, "UTF-8, ISO-8859-2", true)); 
Смежные вопросы