防止图像保存到数据库而不是字符

时间:2016-01-23 09:01:28

标签: javascript jquery html ajax character-encoding

通过代理我尝试解析一些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());

2 个答案:

答案 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');

现在效果很好。