2009-06-19 3 views
1

AJAX 호출을 통해 서버에서 데이터를 가져 와서 responseDiv.innerHTML을 사용하여 결과를 표시하려고합니다. 서버의 데이터는 부분적으로 za \ u010Dat test와 같은 유니 코드 요소로 인코딩됩니다. 응답 div의 innerHTML을 설정하면 이는 방금 표시된대로 표시됩니다. 즉, 유니 코드는 브라우저에서 실제 표현으로 변환되지 않습니다.AJAX/innerHTML을 통해 부분적으로 유니 코드로 인코딩 된 데이터 표시

포함 페이지의 charset은 UTF-8로 설정됩니다. 유니 코드 표현을 HTML 엔티티로 변환하는 것과 같은 대부분의 다른 작업을 시도했지만 그 중 하나가 작동하지 않는 것 같습니다.

또한 서버에서 오는 텍스트에도 HTML 태그가 혼합되어 있음을 언급해야합니다. HTML 태그는 반드시 준수해야합니다. 예를 들어 서버의 텍스트가 <b>Bold this!</b> 인 경우 텍스트는 굵게 표시됩니다.

도움을 주시면 감사하겠습니다. '& # x010D;'

크람

답변

0

당신은 '\ u010D'로 대체 할 수 있습니까?

AFAIK innerHTML을 설정하는 경우 서버에서 오는 HTML 태그가 작동해야합니다.

이 나를 위해 작동합니다

document.getElementById('info').innerHTML = "&#x010D; <b>Bold this</b>"; 

을 BTW - 당신은 당신이 서버에서 무엇을 기대지고 보장하기 위해 피들러 또는 방화범이 끌려 같은 것을 사용할 수 있습니다.

업데이트 :

$.get('data.txt', function(data) { 
    data = data.replace(/\\u([0-9A-F])([0-9A-F])([0-9A-F])([0-9A-F])/g, '&#x$1$2$3$4;'); 
    document.getElementById('info').innerHTML = data; 
}); 
+0

흠 .. 텍스트는 데이터베이스에 저장되며 서버에 보내기 전에 HTMLEntity 변환기로 유니 코드를 실행할 수 있습니다. 대신 유니 코드 부분 만 클라이언트 측에서 변환하는 방법이 있습니까? –

+0

은 대안으로 답변을 업데이트했습니다. 응답을 문자열로 처리하도록 javascript를 강제합니다. – russau

+0

좋습니다. 유일한 문제는 데이터에 문자열이 포함 된 HTML이 포함되어 있다는 것입니다. 따라서 데이터에는 다음과 같은 마크 업이 포함됩니다. Hello 링크 : here 등. 이로 인해 Javascript는 eval을 수행 할 때 끝나지 않은 문자열 리터럴 오류를 발생시킵니다. –

0

그냥 직접 문자를 유니 코드 리터럴을 변환 :

'H\u0065\u006Clo, world!'.replace(/\u([0-9a-fA-F]{4})/, function() {
        return String.fromCharCode(parseInt(arguments[1],16)); 찾아 HTML 엔티티로 유니 코드 문자를 대체하는 정규 표현식을 사용
});

관련 문제