通过代理我尝试解析一些HTML。对于其中一个,我通过jQuery
获得特定元素:
var site = 'http://www.kartabu.com/pl/index.php?filter=random'
var url = 'http://localhost/taboo.blue-world.pl/admin/proxy.php?url=' + encodeURIComponent(site)
$.ajax({
url : url,
type : 'GET',
dataType : 'html'
}).done(function(res) {
var div = $('<div></div>');
div.html(res);
var to_guess = div.find('.card_top_name').first().text().toLowerCase();
console.log(to_guess);
});
这是我的 proxy.php 文件:
$url = urldecode($_GET['url']);
$url = 'http://' . str_replace('http://', '', $url); // Avoid accessing the file system
echo file_get_contents($url); // You should probably use cURL. The concept is the same though
结果在控制台pe�ny
上打印,而不是pełny
。由于源网站上有pełny
。我怎样才能解决这个问题?问题的根源在哪里?
以下行也无法解决问题:
var to_guess = encodeURIComponent(div.find('.card_top_name').first().text().toLowerCase());
答案 0 :(得分:1)
尝试在您的ajax中添加contentType: "application/x-www-form-urlencoded;charset=utf-8",
。像这样。
$.ajax({
url : url,
type : 'GET',
dataType : 'html',
contentType: "application/x-www-form-urlencoded;charset=utf-8",
}).done(function(res) {
var div = $('<div></div>');
div.html(res);
var to_guess = div.find('.card_top_name').first().text().toLowerCase();
console.log(to_guess);
});
这将导致与语言无关的结果。
答案 1 :(得分:0)
我只需要将以下标题添加到proxy.php
:
header('Content-Type: text/html; charset=ISO-8859-2');
现在效果很好。