从几天开始,我正在尝试实施一些代码,将一些示例内容从另一个站点加载到我的站点。我有编码问题 - 波兰语。 源站点是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但没有结果。测试site
答案 0 :(得分:2)
Web浏览器与file_get_contents无关。
使用CURL而不是file_get_content。文档here
此外,dominikanie.pl(来源)是UTF-8,而不是ISO。这就是您的编码不起作用的原因。
您可以尝试通过AJAX查询数据时将数据作为XML或jSon对象发送。
使用较新的jQuery
iconv vs mb - 我更喜欢iconv。另外我的经验是编码检测并不总是按预期工作。特别是当没有太多的数据需要测试或者有一些奇怪的实体如MsWord特殊字符(如波兰语“”)
str_repleace有时会出现波兰字符问题。它很少见,但过去我遇到了一些问题。也不要使用htmlentities()。它真的很想打破PL字符:]
答案 1 :(得分:1)
源站点是ISO-8859-2,目标是UTF-8
所以它应该是
$htm = mb_convert_encoding($htm, "UTF-8",
mb_detect_encoding($htm, "UTF-8, ISO-8859-2", true));