使用AJAX在JSON中进行字符编码

时间:2013-01-21 20:21:59

标签: javascript ajax json character-encoding

我想使用

从Open Data Wien Json加载JSON文件
$.ajax({
    type: "GET",
    url: jsonData,
    contentType: "application/json; charset=ISO-8859-1",
    dataType: "json",
    data: "",
    success: function(json) {
        $.each(json, function (key, val) {
           getJson(val);
        });
        $("#divMessage").css("display", "none");
    },
    error: function (xhr, textStatus, errorThrown) {
        $("#error").html(xhr.responseText);
    }
});

但是ä,ö等被打破了,我尝试了utf-8等,但都没有用。

有任何解决这个问题的想法吗?

2 个答案:

答案 0 :(得分:0)

这可能是一个显示问题,这意味着JSON可能不是问题。

尝试直接在HTML标记中添加这些字符(ä,ö),如果它们显示为“已损坏”,那么您可以将JSON消除为问题的根源。

在HTML文档的Content-Type部分添加<head>元标记通常可以解决此类问题

<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>

答案 1 :(得分:0)

如果您使用的是脚本语言文件,您可以这样做:(如果您没有问题,可能会有些慢......)

<?php
header('Content-Type: application/json; charset=utf-8', true);

print(getUTF8("http://data.wien.gv.at/daten/wfs?service=WFS&request=GetFeature&version=1.1.0&typeName=ogdwien%3aMUSEUMOGD&srsName=EPSG:4326&outputFormat=json"));

function getUTF8($url){
    //if(is_valid_url){make all checkings to avoid errors and assure that the URL is valid;
    if($read = file_get_contents($url)){
        return trim(utf8_encode($read));
    }
    else return "error";    
}
?>

和/或使用此JavaScript function from PHPJS

检索您的数据