2010-12-13 4 views
1

나는 제안을 가진 ajax 모양을 공급하는 PHP 페이지를 부르고있는 javascript 원본이있다. 제안은 PHP 페이지에서 잘 반환되지만, 어떤 이유로, HTML 페이지의 요소로 javascript 객체 요청의 respondsetext를 설정하면 모든 특수 문자 (예 : á 또는)가이 물음표로 표시됩니다 . 요청의 응답 텍스트에서 함수를 실행해야 함수가 올바르게 읽혀 지는지 확인해야합니까?자바 스크립트 변수의 특수 문자가 as로 계속 표시됩니다. 어떻게 방지합니까?

감사합니다.

답변

0

PHP 스크립트에서 모든 것을 HTML 엔티티로 인코딩하려고합니다.

쉽게 자바 스크립트에 결과를 반환하기 전에 이런 일을 수행하여 테스트 할 수 있습니다 : 당신이 시도 할 수있는 htmlspecialchars 기능도 있습니다

$results = htmlentities($htmlstring); 

.

여기에 대한 자세한 : 당신이 UTF-8로 HTML 페이지를 제공하지 않는 경우, 브라우저 인코딩, 일반적으로 단일 바이트 윈도우 코드 페이지가 따라 생각합니다

+0

'htmlentities'는 종종 문제가 있습니다. 엔티티 참조 만이 실제로 HTML 엔티티를 정의한 문자를 대체합니다. 예를 들어'é'->'& eacute;','e̋'->'e̋'와 같이, ASCII 문자. 생략되었을 때의 디폴트'encoding' 인자는 ISO-8859-1입니다. 이것은 실제 작업중인 인코딩이 아니기 때문에 결과물에서 엔티티 참조가 부정확하게됩니다. – bobince

4

을 사용자의 로켈에서

하지만 AJAX에서는 발생하지 않습니다. XMLHttpRequest을 사용하면 브라우저에서 Content-Type: ...; charset= 매개 변수의 인코딩을 명시하지 않는 한 브라우저는이를 UTF-8로 처리합니다. 즉, 실제로 Windows 코드 페이지 1252 (서유럽 어) 컨텐츠를 제공하는 경우 유효하지 않은 UTF-8 시퀀스와 그 결과의 물음표가 표시됩니다.

비 UTF-8 인코딩을 사용하고 싶지 않습니다! 응용 프로그램 전체에서 UTF-8을 사용하고 있는지 확인하십시오. Content-Type: text/html; charset=utf-8으로 모든 페이지를 제공하고 데이터를 UTF-8 테이블에 저장하고 mysql_set_charset()을 사용하여 UTF-8 등을 선택하십시오.

어쨌든 JSON을 사용하여 AJAX 응답을 전달하는 것을 고려해보십시오. 함수 json_encode()은 비 ASCII 문자에 대해 JavaScript 이스케이프 시퀀스를 사용하는 JSON 문자열을 생성하므로 인코딩 불일치 문제를 방지합니다. 또한 원시 HTML을 반환하는 것보다 기능을 추가하는 것이 더 쉽습니다.

관련 문제