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