2012-07-18 4 views
0

jQuery는 프랑스 C-cedilla 문자가 포함 된 유효한 json 응답으로 보이는 내용을 분석하지 못합니다. jquery는 c-cedilla로 json을 디코딩 할 수 없습니다.

JQuery와 JSON 요청

은 이것이다 :

$.ajax({ 
    url: "retrieve", 
    dataType: 'json', 
    success: function (x) { }, 
    error: function (jqXHR, textStatus, errorThrown) { }); 

끊다가이 응답을 보냅니다 :

{ 
    "trist":"{\"Lines\":[{\"C\":\"Director: Beça\"}]}" 
} 

jQuery를 때문에 베카에서 C-디유의 잘못된 문자에 대해 불평, 실패합니다. 방금 브라우저에서 원시 json 응답을 검사하면 괜찮습니다. 지금까지의 모든 조사에서 이것이 정상적으로 작동해야한다고 제안 했으므로 더 이상 고려하지 않을 것입니다.

"리뷰"필드의 값은 그 자체가 json 개체입니다. 즉, "trist"의 값은 문자열로 추출 된 다음 나중에 Lines 객체로 파싱됩니다. 아마 그 안 json 제대로 utf - 8 인코딩되지? 아마 그 내면의 아들은 어떤면에서 '도망쳐 야 할'필요가있을 것입니다.

+0

이상한 문자가없는 다른 출력으로 사용해 보았습니까? – Onheiron

+0

이스케이프 된 따옴표에 대해서는 잘 모르겠습니다. UTF-8과 같은 charset을 사용하면 유효한 JSON 문자열 응답이됩니다. ''{ "trist": { "Lines": [{ "C": "감독 : Beça"}]}} '' – devnull69

+0

Ah, 그래서 나는 별 전쟁을 바꾸기 위해 내가 도망친 것을 풀어 내야한다. 나는 지금 어떻게해야하는지 생각하고있다. jsonWriter를 사용하는 대신 수동으로 json을 작성해야하는 것처럼 보입니다. – LineloDude

답변

0

문제는 웹 페이지의 인코딩 불일치입니다. 일단 UTF-8로 응답하고 웹 페이지의 charset 헤더를 UTF-8로 설정하면 서버가 제대로 작동합니다. 누가 devnull69를 포함하여 이것을 보았던 사람 덕분에 그의 코멘트에 다시 참여하게되었습니다.

관련 문제