1

从几天开始,我正在尝试实现一些代码以将一些示例内容从另一个站点加载到我的站点。我有编码问题 - 波兰语。源站点是 ISO-8859-2,目标是 UTF-8。它适用于 Chrome 和 Safari,不适用于 FF、Opera 和 IE。我究竟做错了什么?

索引.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>

卷曲.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 无关。

  • 使用 CURL 代替 file_get_content。文档在这里

  • dominikanie.pl (source) 也是 UTF-8,而不是 ISO。这就是您的编码不起作用的原因。

  • 通过 AJAX 查询数据时,您可以尝试将数据作为 XML 或 jSon 对象发送。

  • 使用较新的 jQuery

  • iconv vs mb - 我更喜欢 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 回答