1

数日後、別のサイトから自分のサイトにサンプル コンテンツをロードするコードを実装しようとしています。エンコードに問題があります - ポーランド語。ソース サイトは ISO-8859-2 で、ターゲットは UTF-8 です。Chrome と Safari では動作しますが、FF、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 を試しましたが、結果はありませんでした。試験場_

4

2 に答える 2

2
  • Webブラウザはfile_get_contentsとは何の関係もありません。

  • file_get_contentの代わりにCURLを使用してください。ここにドキュメント

  • また、dominikanie.pl(ソース)はISOではなくUTF-8にあります。これが、エンコーディングが機能しない理由です。

  • AJAXを介してデータをクエリするときに、データをXMLまたはjSonオブジェクトとして送信することを試みることができます。

  • 新しいjQueryを使用する

  • iconvvsmb-私はiconvが好きです。また、私の経験では、エンコーディング検出は必ずしも正常に機能するとは限りません。特に、テストするデータが少ない場合、またはMsWordの特殊文字(ポーランド語 ""など)のような奇妙なエンティティがある場合

  • str_repleaceは、ポーランド語の文字で問題が発生することがあります。まれですが、過去に問題がありました。また、htmlentities()は使用しないでください。PL文字を壊すのが本当に好きです:]

于 2013-03-20T09:14:28.317 に答える
1

ソース サイトは ISO-8859-2、ターゲットは UTF-8

だからそうあるべきだ

$htm = mb_convert_encoding($htm, "UTF-8",
      mb_detect_encoding($htm, "UTF-8, ISO-8859-2", true));
于 2013-03-20T09:39:00.497 に答える