2013-03-20 4 views
1

몇 일 전부터 다른 사이트의 예제 콘텐츠를 내 사이트로로드하기 위해 몇 가지 코드를 구현하려고합니다. 인코딩 - 폴란드어 언어에 문제가 있습니다. 원본 사이트는 ISO-8859-2이며 대상은 UTF-8입니다. Chrome, Safari에서 작동하며 FF, Opera 및 IE에서 작동하지 않습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?file_get_contents 인코딩 - 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
  • 웹 브라우저는 file_get_contents와 아무런 관련이 없습니다.

  • file_get_content 대신 CURL을 사용하십시오. 문서 here

  • dominikanie.pl (source)도 ISO가 아닌 UTF-8입니다. 이것이 인코딩이 작동하지 않는 이유입니다.

  • AJAX를 통해 데이터를 쿼리 할 때 XML 또는 jSon 객체로 데이터를 전송할 수 있습니다.

  • 사용하는 최신 jQuery를

  • iconv vs mb - 나는의 iconv를 선호합니다. 또한 제 경험은 인코딩 감지가 항상 제대로 작동하지 않는다는 것입니다. 특히 테스트 할 데이터가 많지 않거나 MsWord 특수 문자 (예 : 폴란드어 "")와 같은 이상한 항목이있는 경우

  • str_repleace가 폴란드어 문자에 문제가있을 수 있습니다. 그것의 희소 한, 그러나 나는 그것에 몇몇 문제가 과거에는 있었다. htmlentities()도 사용하지 마십시오. 그것은 정말로이 PL의 문자 파산 좋아 :

1

소스 사이트 그래서 그것이 있어야 UTF-8

에서 ISO-8859-2 및 대상]을

$htm = mb_convert_encoding($htm, "UTF-8", 
     mb_detect_encoding($htm, "UTF-8, ISO-8859-2", true)); 
관련 문제