2013-01-21 39 views
0

我想加載從開放式數據維也納Json一個JSON文件,字符編碼與AJAX

$.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等,但沒有工作。

任何想法來解決這個問題?

+0

你的JSON數據進行編碼'JS檢索數據ON.stringify',對嗎? – kinsho

+0

OP的鏈接數據是一個JSON,用ISO-8859-1編碼。 '內容編碼gzip'和'內容類型應用程序/ json' – istepaniuk

+0

當我嘗試「警報(JSON.stringify(json));」編碼仍然被破壞。有任何想法嗎? :/ – katzensaft

回答

0

這可能是一個顯示問題,這意味着JSON可能不是問題。

嘗試直接在HTML標記中添加這些字符(ä,ö),如果它們出現「破損」,那麼您可能會消除JSON作爲問題的根源。

在HTML文檔的<head>部分添加Content-Type meta標籤通常可以解決。如果您在使用腳本語言文件,你可以做這樣那樣的問題

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

我的html正確顯示ä,ö,ü,ß,只是在這個json中它的破損 – katzensaft

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

+0

我的網頁用charset = ISO-8859-1編碼,仍然破損。 – katzensaft

+0

我試過你的代碼,它沒有工作:( – katzensaft

+0

你有'console.log(myJSON);'? –