2014-05-09 2 views
1

전 cross-domain 호출을하고 div에 표시 할 html을 얻을 whateverorigin.org 사용하고 있습니다. 그러나 영어가 아닌 몇몇 사람들은 이상합니다 (작은 사각형). 다음은 내 코드입니다.크로스 도메인 반환 유니 코드 문자가

$.ajaxSetup({ scriptCharset: "utf-8" , contentType: "application/x-www-form-urlencoded; charset=utf-8"}); 

$.getJSON('http://whateverorigin.org/get?url=' + encodeURIComponent('https://www.testserver/index.html') + '&callback=?', function(data){ 
      $("div#test").html(data.contents); 
     }); 

올바른 문자를 어떻게 다시 얻을 수 있습니까?

답변

0

일반 XMLHttpRequest를 사용하는 대신 <script> 요소를 원격 콘텐츠를 가리키는 현재 페이지에 추가하여 구현되는 JSONP 요청을 수행하고 있습니다.

XHR/JSON 응답은 UTF-8로 디코딩되지만, <script>은 브라우저가 현재 페이지의 인코딩이 무엇인지에 관계없이 해석됩니다. 따라서 지정하지 않은 경우 <meta charset="UTF-8"> 또는 Content-Type: text/html;charset=utf-8을 사용하면 브라우저가 추측해야합니다. UTF-8 이외의 다른 것을 추측하면 (포함 할 가능성이 매우 높음) 포함 된 스크립트가 잘못 코딩됩니다.

+0

감사합니다.하지만 코드의 첫 번째 줄에서 문제를 해결해야합니다. 그렇습니까? – user217648

+0

코드의 첫 번째 줄을 text/html; charset = utf-8로 바꿉니다.하지만 영어 이외의 문자는 사각형입니다. – user217648

+0

'scriptCharset'는 모든 브라우저에서 작동하지 않습니다. 불행하게도, 페이지의 charset도 일치하도록 설정해야합니다. 다음으로 확인해야 할 것은'https : // www.testserver/index.html'에서 가져 오는 페이지 자체가''또는'Content-Type' 헤더를 가지고 있기 때문입니다. WhateverOrigin 자체가 추측해야만하지 않기 때문에 해당 페이지가 어떤 인코딩인지, 그리고 잘못 추측 될 수 있습니다. – bobince

관련 문제